我需要在目标c中将十六进制字符串转换为二进制形式,有人请引导我吗? 例如,如果我有一个十六进制字符串7fefff78,我想将它转换为1111111111011111111111101111000?如何将十六进制转换为二进制iphone
BR, Suppi
我需要在目标c中将十六进制字符串转换为二进制形式,有人请引导我吗? 例如,如果我有一个十六进制字符串7fefff78,我想将它转换为1111111111011111111111101111000?如何将十六进制转换为二进制iphone
BR, Suppi
尼斯递归解决方案的权力之美...
NSString *hex = @"49cf3e";
NSUInteger hexAsInt;
[[NSScanner scannerWithString:hex] scanHexInt:&hexAsInt];
NSString *binary = [NSString stringWithFormat:@"%@", [self toBinary:hexAsInt]];
-(NSString *)toBinary:(NSUInteger)input
{
if (input == 1 || input == 0)
return [NSString stringWithFormat:@"%u", input];
return [NSString stringWithFormat:@"%@%u", [self toBinary:input/2], input % 2];
}
只需通过一个转换每个数字之一:0 -> 0000
,7 -> 0111
,F -> 1111
等小查找表可以使这个非常简洁。
数碱的另一基地:-)
手动转换?将16种情况编码为开关式声明? :) –
@Jonathan:查询表会提示自己而不是switch语句。 –
在这个重复的问题有一个程序化的答案:http://stackoverflow.com/questions/4618403/convert-binary-to-decimal-in-objective-c。 –
如果你需要前导零,例如18返回00011000,而不是11000
-(NSString *)toBinary:(NSUInteger)input strLength:(int)length{
if (input == 1 || input == 0){
NSString *str=[NSString stringWithFormat:@"%u", input];
return str;
}
else {
NSString *str=[NSString stringWithFormat:@"%@%u", [self toBinary:input/2 strLength:0], input % 2];
if(length>0){
int reqInt = length * 4;
for(int i= [str length];i < reqInt;i++){
str=[NSString stringWithFormat:@"%@%@",@"0",str];
}
}
return str;
}
}
NSString *hex = @"58";
NSUInteger hexAsInt;
[[NSScanner scannerWithString:hex] scanHexInt:&hexAsInt];
NSString *binary = [NSString stringWithFormat:@"%@", [self toBinary:hexAsInt strLength:[hex length]]];
NSLog(@"binario %@",binary);
我同意kerrek SB的答案,并试图此。 它为我工作。
+(NSString *)convertBinaryToHex:(NSString *) strBinary
{
NSString *strResult = @"";
NSDictionary *dictBinToHax = [[NSDictionary alloc] initWithObjectsAndKeys:
@"0",@"0000",
@"1",@"0001",
@"2",@"0010",
@"3",@"0011",
@"4",@"0100",
@"5",@"0101",
@"6",@"0110",
@"7",@"0111",
@"8",@"1000",
@"9",@"1001",
@"A",@"1010",
@"B",@"1011",
@"C",@"1100",
@"D",@"1101",
@"E",@"1110",
@"F",@"1111", nil];
for (int i = 0;i < [strBinary length]; i+=4)
{
NSString *strBinaryKey = [strBinary substringWithRange: NSMakeRange(i, 4)];
strResult = [NSString stringWithFormat:@"%@%@",strResult,[dictBinToHax valueForKey:strBinaryKey]];
}
return strResult;
}
http://stackoverflow.com/questions/4618403/convert-binary-to-decimal-in-objective-c –
的重复我敢肯定,一个是相反的,不是重复。 –
@Carl:你是对的。 –