我有NSData,我想按字节解析它。这是一个例子。
data is <8283010c ec4f483f 0d00000c 0c0f2840 >
我想将8个字节传递给我创建(8283010c ec4f483f for first object,0d00000c 0c0f2840 for the second)
的每个对象,然后像这样解析每个字节。
// First byte > Action = 82
// 2nd and 3rd byte > Status = 83 01
// 4,5,6,7 byte > Time = 0c ec 4f48
// 8 byte > Number = 3f
我如何解析NSData到这样的结构,我应该使用哪些类型的变量(Action)?
unsigned char aBuffer[8];
[data getBytes:aBuffer length:8];
尝试以这种方式进行一些测试,但NSLog打印带有奇怪符号的aBuffer,而不是字节值。
答案 0 :(得分:3)
NSLog使用奇怪的符号打印aBuffer,而不是字节值。
因为那些是NSData包含的实际字节,而不是它们的十六进制表示。如果需要十六进制表示,则必须相应地格式化字节:
NSMutableString *hexRepr = [NSMutableString string];
for (int i = 0; i < 8; i++) {
[hexRepr appendFormat:@"%02x", ((uint8_t *)[data bytes])[offset * 8 + i]];
}
答案 1 :(得分:0)
作为对@ H2CO3答案的跟进,
根据NSData docs,[data description]
返回十六进制表示。那不是更容易吗?
更新:找到不应使用[data description]
的原因:https://stackoverflow.com/a/9084784/58505