【发布时间】:2013-10-04 10:01:41
【问题描述】:
我有一个十六进制值的数组,如下所示:
const UInt8 request_MifareID[] = {
0x00, 0xCA, 0x01, 0x0A, 0x00
};
然后我将其传输到 NSData 进行通信:
NSData *data = [[NSData alloc] initWithBytesNoCopy:(UInt8 *)request_MifareID length:5];
向服务器发送“数据”并获得服务器响应:
Printing description of resp:
<ee97562d 02280400 00000000 21074400 9000>
NSUInteger len = [resp length];
Printing description of len:
(NSUInteger) len = 18
“resp”也是一个十六进制格式的NSData
现在,我必须将“resp”转移到十进制数组
我该怎么办?
----------------------------------------------- --------编辑
好的,首先
我必须传输服务器响应的 NSData(它不是字符串,只是数字):
ee97562d 02280400 00000000 21074400 9000
进入什么样的物体?
字节?
当我使用时
NSString * str = [[NSString alloc] initWithData: resp
encoding:NSUTF8StringEncoding];
它返回零
【问题讨论】:
-
内存中的表示不是“十进制”或“十六进制”。它不取决于你如何格式化它。做
NSLog(@"%u", ((uint8_t *)[data bytes])[0]),然后瞧。 -
请参阅关于此主题的另一个 SO 线程:stackoverflow.com/questions/19066246/…
-
是的,数据不是“十六进制”。为了您的方便,它只是以十六进制格式显示。
-
当您执行 NSString initWitData 时,您会得到一个 nil 结果,因为 NSData 对象的内容不是合法的 UTF8 字符代码数据。