1

如何在 Objective-C 中将整数 6 位数字(例如“1234674”)转换为十六进制 4 字节 NSData?

4

1 回答 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 回答