【问题标题】:Conversion NSData to NSString, correctly正确地将 NSData 转换为 NSString
【发布时间】:2014-11-20 13:17:21
【问题描述】:

我正在做一个项目,我必须使用蓝牙,显然,所有传入的数据都需要采用 NSData 格式。

我正在使用问题Best way to serialize a NSData into an hexadeximal string 中的实现,但转换不正确。

主要代码sn-p是这样的:

for (int i = 0; i < dataLength; ++i)
        [hexString appendString:[NSString stringWithFormat:@"%02lx", (unsigned long)dataBuffer[i]]];

这里发生了错误的转换。我逐字节检查。

一些转换示例:

NSData: 十六进制字符串:00240043043d0493000000000000000000000000

NSData: 十六进制字符串:002300450435049a000000000000000000000000

NSData: 十六进制字符串:00250045044e04a9000000000000000000000000

NSData: 十六进制字符串:00250043043b0497000000000000000000000000

实现有问题吗?

【问题讨论】:

  • 您确定问题不在您的代码中吗?看来“Hex String”和下一个NSData一样……
  • 检查这个问题stackoverflow.com/questions/7520615/… 我认为这正是您所需要的。 [1]:
  • 我无法找出问题的根源...我使用了两个sn-ps 代码,一个在描述中提到,另一个是您所指的。这两种解决方案具有不同的输出,并且总是与 NSData 不同。

标签: ios objective-c string bluetooth


【解决方案1】:

它对我有用:

    NSMutableString *hexString = [[NSMutableString alloc] init];

    char buffer;
    for (NSInteger i = 0; i < data.length; ++i){
        [data getBytes:&buffer range:NSMakeRange(i, 1)];
        [hexString appendString:[NSString stringWithFormat:@"%02hhx", buffer]];
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 2012-11-09
    相关资源
    最近更新 更多