我有4个字节的数据(存储为unsigned int),我想使用它。
当这是1字节数据时,使用以下方法解决了这个问题:
//Java
buffer.get() & 0xFF
//Objective-C
uint32_t buffer;
[data getBytes:&buffer range:NSMakeRange(2, 1)];
uint32_t payloadLength = buffer & 0xFFu;
//data = d1021b53
//buffer = 897307; payloadLength: 27
在Java中,为4个字节,这是使用:
完成的//Java
buffer.getInt() & 0xFFFFFFFFL
//Current not working Objective-C code
uint32_t buffer;
[data getBytes:&buffer range:NSMakeRange(2, 4)];
uint32_t payloadLength = CFSwapInt32BigToHost(buffer);
//data: 0103940f b7626361
//buffer = 1656164244; payloadLength: 2484057954 (should be = ~80)
对于Objective-C / C,我在使用4字节和位掩码时遇到了困难。
有人对此有任何帮助吗?
答案 0 :(得分:1)
要将4个字节转换为整数,您可以执行与1字节代码类似的操作,但必须处理字节序 - 您需要知道存储4个字节的哪个方向,低字节或高字节第一
首先使用4字节缓冲区:
maxOccurs="1"
复制字节:
uint32_t buffer; // or use int32_t if signed
并将字节顺序转换为主机顺序。如果数据是大端,请执行:
[data getBytes:&buffer range:NSMakeRange(0, 4)];
或者如果它的小端:
uint32_t payloadLength = CFSwapInt32BigToHost(buffer);
你已经完成了。