Objective C - 将char[]转换为十六进制格式的NSString

5

我有一个问题,我需要将char []转换为十六进制格式的字符串

例如

Nsstring * result;
char[4]={0x01,0x02,0x03,0x04};

///    convert  --   char[] -> Nsstring in Hex format

Nslog(@"%@",result);

预期输出:"01020304"
谢谢
2个回答

10

试试这个:

NSMutableString * result = [[NSMutableString alloc] init];
char cstring[4]={0x01,0x02,0x03,0x04};
///    convert  --   char[] -> Nsstring in Hex format
int i;
for (i=0; i<4; i++) {
    [result appendString:[NSString stringWithFormat:@"%02x",cstring[i]]];
}

NSLog(@"%@",result);
[result release];

1
+1,但最好使用initWithCapacity:来避免重新分配内存,因为您知道字符串的长度。 - Adam Rosenfield
1
那么您可能还想执行[result appendFormat:@"%02x",cstring[i]]以避免额外的字符串分配。 - Jon Hess
如果您需要大写字母,并且它们都连续出现三次,就像我一样,"%02X%02X%02X" 是正确的字符串。 - SilverSideDown

4

格式化符号"%02x"将把一个单独字符显示为两位零填充的十六进制数字。只需遍历您的数组并用它们构建字符串即可。


我喜欢这个解释了 %02x 的含义。 - ABCD.ca

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接