如何在 Objective-C 中将整数 6 位数字(例如“1234674”)转换为十六进制 4 字节 NSData?
问问题
161 次
1 回答
3
数据是字节,字节是位而不是十六进制,十六进制只是解释数据的一种方式。ARM 中的 int 是 32 位的(可以使用 int32_t 或 sizeof)
你可以做
int x = 1234674;
NSData *myData = [NSData dataWithBytes:&x length:sizeof(int)]
然后如果您想将该数据打印为十六进制:
char c[4] = [myData bytes];
NSLog("%@",[NSString stringWithFormat:@"%02X%02%02X%02",c[0],c[1],c[2],c[3]]);
如果您只想打印或转换为十六进制字符串,可以使用这样的 char 指针:
char *c = &x;
NSString *hexStr = [NSString stringWithFormat:
@"%02X%02%02X%02", *c, *(c+1), *(c+2), *(c+3)];
我没有尝试编码,但应该可以工作,以防万一我希望你明白了
于 2013-02-27T23:40:20.917 回答