開發(fā)時碰到一個需要辟癌,就是要把一個較大的十進制值轉(zhuǎn)成十六進制派歌,雖然網(wǎng)上很多方法埃撵,但都是輸出一位的十六進制雇寇,所以一超過256的十進制就不方便使用了氢拥,雖然還是可以拆開分別轉(zhuǎn)化后再合起來,但感覺不想那樣寫锨侯,不多說了嫩海,直接看下面代碼吧
#pragma mark -- 10進制轉(zhuǎn)16進制
- (NSString *)ToHex:(int)tmpid
{
NSString *nLetterValue;
NSString *str =@"";
long long int ttmpig;
for (int i = 0; i<9; i++) {
ttmpig=tmpid%16;
tmpid=tmpid/16;
switch (ttmpig)
{
case 10: nLetterValue =@"A";break;
case 11: nLetterValue =@"B";break;
case 12: nLetterValue =@"C";break;
case 13: nLetterValue =@"D";break;
case 14: nLetterValue =@"E";break;
case 15: nLetterValue =@"F";break;
default:nLetterValue=[[NSString alloc]initWithFormat:@"%lli",ttmpig];
}
str = [nLetterValue stringByAppendingString:str];
if (tmpid == 0) {
break;
}
}
str = str.length == 1 ? [NSString stringWithFormat:@"0%@",str] : str ;
return str;
}
上面的一段代碼就是常用的十進制轉(zhuǎn)十六進制字符串,網(wǎng)上到處都有囚痴,我在上面也就加了一段,這里必須要加這句叁怪,不然有些中間都是零的十六進制顯示會出問題
str = str.length == 1 ? [NSString stringWithFormat:@"0%@",str] : str ;
主要想實現(xiàn)的是輸出 "00","01"深滚,這類的字符串
下面這段就是你們主要想看到的輸出多位十六進制的方法
- (NSString *)ToHex2:(int)tmpid
{
NSString *str =@"";
int tmpid2;
do {
tmpid2 = tmpid%256;
tmpid = tmpid/256;
str = [NSString stringWithFormat:@"%@%@", [self ToHex:tmpid2],str];
} while (tmpid != 0);
return str;
}
看代碼不需要解釋了吧奕谭,就挺簡單的涣觉,這里調(diào)用上面的循環(huán)字符串累加輸出
我自己試過了基本都可以轉(zhuǎn)
例如:
480 -> "01e0"
196609 - > "030001"