如何在Objective-C中将int转换为字节?

时间:2010-04-22 05:43:34

标签: objective-c bytearray int

我有一个需要转换为字节数组的int值。 你如何在Objective-C中做到这一点?有没有方法可以做到这一点?

谢谢,

2 个答案:

答案 0 :(得分:6)

以什么方式转换?你想用小端,大端或本地字节顺序吗?如果你想以原生字节顺序,那么你需要做的就是:

int val = //... initialize integer somehow
char* bytes = (char*) &val;
int len = sizeof(int);

也就是说,操作整数字节的最佳方法是进行逐位运算。例如,要获得最低阶字节,您可以使用val& 0xFF,然后使用(val>>8)&0xFF,然后使用(val>>16)&0xFF,然后使用(val>>24)&0xFF等。

当然,这取决于数据类型的大小。如果你做了这些事情,你真的应该包括< inttypes.h > ;,并使用uint8_tuint16_tuint32_t或者uint64_t,取决于您想要的整数大小;否则,你无法可靠地使用更多的字节。

答案 1 :(得分:1)

我怀疑你想要做的是将这个字节数组传递给某个NSMutableData对象。你只需传递地址&amp; val

示例:

[myData appendBytes:&myInteger length:sizeof(myInteger)]; 

此链接更完整,并处理字节顺序:

Append NSInteger to NSMutableData