在java里面转个进制真是十分方便,调个函数就行,但是在ios中,为啥没找到,算啦,还是自己写个2进制转换到十六进制的代码
(*^__^*) 大一的时候真是傻乎乎,天天手动算==
网上看到一个人计算的时候是先转成浮点数来算的。。其实也可以,但是这样的话二进制的字符串不能太长是个弊端。
字典很方便来搞。
话说看到这种清新的图片颜色搭配就喜欢的不要不要的怎么破。。。(*^__^*) 怀着愉悦的心情写好了算法
注意两点:一是前面增加多少个0,二是转换之后最前面的0去掉。
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic,strong) NSDictionary * dict;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSDictionary *dict = @{
@"0000":@"0",
@"0001":@"1",
@"0010":@"2",
@"0011":@"3",
@"0100":@"4",
@"0101":@"5",
@"0110":@"6",
@"0111":@"7",
@"1000":@"8",
@"1001":@"9",
@"1010":@"A",
@"1011":@"B",
@"1100":@"C",
@"1101":@"D",
@"1110":@"E",
@"1111":@"F"};
self.dict = dict;
// NSLog(@"result is %@", [self turn2to16:@"0010001011000111000011011000101000011"]);
NSLog(@"result is %@", [self turn2to16:@"00010101"]);
}
//先判断字符串的长度,如果%4差几的话,就在前面补4减去几个0
//然后根据数组来进行匹配
-(NSString *)turn2to16:(NSString *)beforeStr{
int i = beforeStr.length %4;
i = 4 - i;
for (int j =1 ; j<=i; j++) {
beforeStr = [NSString stringWithFormat:@"0%@",beforeStr];
}
NSString *resultStr ;
for (int i = 0; i < beforeStr.length/4; i++) {
int j = i *4;
NSString *keyStr = [beforeStr substringWithRange:NSMakeRange(j, 4)];
if (j == 0) {
resultStr = [self.dict objectForKey:keyStr];
if([resultStr isEqualToString:@"0"])
resultStr =@"";
}else
resultStr =[NSString stringWithFormat:@"%@%@",resultStr,[self.dict objectForKey:keyStr]];
}
return resultStr;
}