- (NSString *)getHexByDecimal:(NSDecimalNumber *)decimal {
//10进制转换16进制(支持无穷大数)
NSString *hex =@"";
NSString *letter;
NSDecimalNumber *lastNumber = decimal;
for (int i = 0; i<999; i++) {
NSDecimalNumber *tempShang = [lastNumber decimalNumberByDividingBy:[NSDecimalNumber decimalNumberWithString:@"16"]];
NSString *tempShangString = [tempShang stringValue];
if ([tempShangString containsString:@"."]) {
// 有小数
tempShangString = [tempShangString substringToIndex:[tempShangString rangeOfString:@"."].location];
// DLog(@"%@", tempShangString);
NSDecimalNumber *number = [[NSDecimalNumber decimalNumberWithString:tempShangString] decimalNumberByMultiplyingBy:[NSDecimalNumber decimalNumberWithString:@"16"]];
NSDecimalNumber *yushu = [lastNumber decimalNumberBySubtracting:number];
int yushuInt = [[yushu stringValue] intValue];
switch (yushuInt) {
case 10:
letter =@"A"; break;
case 11:
letter =@"B"; break;
case 12:
letter =@"C"; break;
case 13:
letter =@"D"; break;
case 14:
letter =@"E"; break;
case 15:
letter =@"F"; break;
default:
letter = [NSString stringWithFormat:@"%d", yushuInt];
}
lastNumber = [NSDecimalNumber decimalNumberWithString:tempShangString];
} else {
// 没有小数
if (tempShangString.length <= 2 && [tempShangString intValue] < 16) {
int num = [tempShangString intValue];
if (num == 0) {
break;
}
switch (num) {
case 10:
letter =@"A"; break;
case 11:
letter =@"B"; break;
case 12:
letter =@"C"; break;
case 13:
letter =@"D"; break;
case 14:
letter =@"E"; break;
case 15:
letter =@"F"; break;
default:
letter = [NSString stringWithFormat:@"%d", num];
}
hex = [letter stringByAppendingString:hex];
break;
} else {
letter = @"0";
}
lastNumber = tempShang;
}
hex = [letter stringByAppendingString:hex];
}
// return hex;
return hex.length > 0 ? hex : @"0";
}
iOS 10进制字符串转16进制(任一大小)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 之前想自己写一个UIColor的分类,实现可以输入十六进制字符串(例如:0xff8ac)的颜色值来设置方便的设置颜...
- 字符串转16进制 16进制转字符串 测试网站 http://www.bejson.com/convert/ox2s...
- 伊始:最近项目需求:从服务端过来的字符串是36进制的,需要将其进行转为10进制后再进行后续操作。(服务端是java...