【问题标题】:NSString value as NSData outputNSString 值作为 NSData 输出
【发布时间】:2016-02-10 17:01:59
【问题描述】:

我有一个NSString,即@"15"

我希望我的NSData 也为 15 岁。我知道如何将其转换为 31 35 的值,但如果我在其上使用 NSLog,我希望我的 NSData 为 15。我不是要求转换,而是更多地要求翻译。我不想更改 NSLog 打印,而是更改 NSData 值。有什么办法吗?

【问题讨论】:

  • NSData 为 15 意味着什么?作为编码字符串?作为其前(1、2、4...)字节的值?说出你真正想要达到的目标,回复可能会更有帮助。

标签: objective-c nsstring nsdata


【解决方案1】:

将字符串解析为整数(假设是有符号的 32 位整数):

NSString *str = @"15";
int32_t i = (int32_t)[str intValue];

以原生字节序编码:

NSData *data = [NSData dataWithBytes:&i length:sizeof(i)];

注意:如果您打算将该数据传输到另一台计算机,那么您需要确定原始类型的通用字节序。 Big endian 传统上用于htonl()ntohl() 等功能并为其提供便利。如果计算机都是相同的平台,那么您可以使用本机字节序,以稍微提高性能并简化代码。

【讨论】:

    【解决方案2】:

    您需要先将字符串转换为字节(通过解析)。然后你可以从字节构建 NSData。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 2015-11-30
      • 1970-01-01
      相关资源
      最近更新 更多