【问题标题】:How do I get my NSString converted into a NSData如何将我的 NSString 转换为 NSData
【发布时间】:2013-12-09 19:11:46
【问题描述】:

我的蓝牙低功耗应用程序出现问题。

我这样读出数据:

NSLog("%@", characteristic.value); //<06000800 10001700>        
NSString *rawData = [NSString stringWithFormat:@"%@", characteristic.value];
        rawData = [rawData stringByReplacingOccurrencesOfString:@" " withString:@""];
        rawData = [rawData stringByReplacingOccurrencesOfString:@"<" withString:@""];
        rawData = [rawData stringByReplacingOccurrencesOfString:@">" withString:@""];
        NSMutableArray *splitData = [[NSMutableArray alloc] init];
        [splitData addObject:[rawData substringWithRange:NSMakeRange(0, 2)]];
        [splitData addObject:[rawData substringWithRange:NSMakeRange(2, 2)]];
        [data replaceObjectAtIndex:3 withObject:[NSString stringWithFormat:@"%@:%@", [splitData objectAtIndex:0], [splitData objectAtIndex:1]]];
        [splitData addObject:[rawData substringWithRange:NSMakeRange(4, 2)]];
        [splitData addObject:[rawData substringWithRange:NSMakeRange(6, 2)]];
        [data replaceObjectAtIndex:4 withObject:[NSString stringWithFormat:@"%@:%@", [splitData objectAtIndex:2], [splitData objectAtIndex:3]]];
        [splitData addObject:[rawData substringWithRange:NSMakeRange(8, 2)]];
        [splitData addObject:[rawData substringWithRange:NSMakeRange(10, 2)]];
        [data replaceObjectAtIndex:5 withObject:[NSString stringWithFormat:@"%@:%@", [splitData objectAtIndex:4], [splitData objectAtIndex:5]]];
        [splitData addObject:[rawData substringWithRange:NSMakeRange(12, 2)]];
        [splitData addObject:[rawData substringWithRange:NSMakeRange(14, 2)]];
        [data replaceObjectAtIndex:6 withObject:[NSString stringWithFormat:@"%@:%@", [splitData objectAtIndex:6], [splitData objectAtIndex:7]]];

然后我得到四个时间值:“06:00”、“08:00”、“10:00”、“17:00”。 我知道有很多更好的方法可以做到这一点,但这不是我的问题。必须尽快完成。

但是在将时间值转换回 NSData 对象时,我遇到了很多麻烦。 我已经尝试了所有想到的事情,甚至几乎没有成功。我需要的是一个看起来像原始值&lt;06000800 10001700&gt; 的 NSData 对象。我有一个包含数字@"0600080010001700" 的 NSString。接下来我该怎么做?

感谢任何帮助,我真的不知道下一步该做什么。

【问题讨论】:

  • 字符串是如何开始创建的?看来原始字符串不是以理想的方式创建的。
  • 我无法改变蓝牙设备保存值的方式,所以我必须使用我所拥有的。将时间值加载到应用程序后,我可以使用选择器视图更改它们,这些视图将它们存储在如下文本字段中:@“hh:mm”。用户选择完时间后,我将文本字段读出,删除冒号并将它们合并为一个字符串,该字符串看起来与原始特征的值相同。

标签: cocoa-touch encoding bluetooth nsstring nsdata


【解决方案1】:

我找到了我的解决方案。花了很长时间,但现在它正在工作。

Converting HEX NSString To NSData

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    相关资源
    最近更新 更多