我有一个需要转换为字节数组的int值。 你如何在Objective-C中做到这一点?有没有方法可以做到这一点?
谢谢,
答案 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_t
,uint16_t
,uint32_t
或者uint64_t
,取决于您想要的整数大小;否则,你无法可靠地使用更多的字节。
答案 1 :(得分:1)
我怀疑你想要做的是将这个字节数组传递给某个NSMutableData对象。你只需传递地址&amp; val
示例:
[myData appendBytes:&myInteger length:sizeof(myInteger)];
此链接更完整,并处理字节顺序: