【问题标题】:how to convert NSData to char array containing hexa values如何将 NSData 转换为包含十六进制值的字符数组
【发布时间】:2012-04-19 02:53:29
【问题描述】:

我正在通过以下方法接收 NSData

     - (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag

服务器以以下格式发送数据

                 04 01 00  

作为十六进制值。所以现在需要将此数据转换为 char 数组,以便我可以分别访问每一对 请帮忙

【问题讨论】:

  • 您确定收到的是十六进制值吗?我会说你只是收到字节。你能转储 didReadWith:**data** 吗?
  • 服务器以上述格式发送数据,我需要转换一下
  • 是的。但那是一个字符串还是你显示使用了一些字节?!给使用一个明确的信息。
  • char a[7] = {0x01,0x05,0x00,0x06,0xE0,0x90,0x01} ; NSData *configurationdata = [NSData dataWithBytes:a length:7]; //dataSent = [sendLeft1On dataUsingEncoding:NSUTF8StringEncoding]; [clientSocket writeData:configurationdata withTimeout:-1.0 tag:1];
  • 我正在以这种格式发送数据,服务器现在可以正确接收,当服务器发送它应该接收并需要转换时,我看不到服务器,但通过它的配置文件我知道那个服务器将发送 04 01 00 作为响应

标签: iphone


【解决方案1】:

如果你想逐字节比较,你可以这样:

    //NSData *test; // assume this is your NSData containing 0x04 0x01 0x00

    char *ptr = (void *)[test bytes]; // set a pointer to the beginning of your data bytes
    if(*ptr == 0x04) {
        NSLog(@"okay,.. got a 0x04");
    }
    ptr++; // go to the next byte
    if(*ptr == 0x01) {
        NSLog(@"okay,.. got a 0x01");
    }

希望对你有用。

【讨论】:

  • 你能帮我把这个 char *ptr 转换成 NSString 以便我可以显示在一些标签或警报上
猜你喜欢
  • 1970-01-01
  • 2014-10-10
  • 2011-12-31
  • 2013-05-07
  • 2011-11-23
  • 2013-12-01
  • 2011-08-11
  • 2012-06-05
相关资源
最近更新 更多