NSString 值作为 NSData 输出
NSString value as NSData output
我有一个 NSString
,它是 @"15"
。
我希望我的 NSData
也是 15 岁。我知道如何将其转换为值 31 35
,但如果我在其上使用 NSLog
,我希望我的 NSData 为 15
。我不是要求转换,而是要求翻译。我不想更改 NSLog
打印,而是 NSData
值。有办法吗?
您需要先将字符串转换为字节(通过解析)。然后你可以从字节构建 NSData。
将字符串解析为一个整数(假设一个有符号的 32 位整数):
NSString *str = @"15";
int32_t i = (int32_t)[str intValue];
以本地字节序编码:
NSData *data = [NSData dataWithBytes:&i length:sizeof(i)];
注意:如果您打算将该数据传输到另一台计算机,那么您需要决定基本类型的通用字节顺序。 Big endian 传统上使用 htonl()
、ntohl()
等函数并为其提供便利。如果计算机都是相同的平台,那么您可以使用本机字节顺序,以获得轻微的性能提升和代码简化。
我有一个 NSString
,它是 @"15"
。
我希望我的 NSData
也是 15 岁。我知道如何将其转换为值 31 35
,但如果我在其上使用 NSLog
,我希望我的 NSData 为 15
。我不是要求转换,而是要求翻译。我不想更改 NSLog
打印,而是 NSData
值。有办法吗?
您需要先将字符串转换为字节(通过解析)。然后你可以从字节构建 NSData。
将字符串解析为一个整数(假设一个有符号的 32 位整数):
NSString *str = @"15";
int32_t i = (int32_t)[str intValue];
以本地字节序编码:
NSData *data = [NSData dataWithBytes:&i length:sizeof(i)];
注意:如果您打算将该数据传输到另一台计算机,那么您需要决定基本类型的通用字节顺序。 Big endian 传统上使用 htonl()
、ntohl()
等函数并为其提供便利。如果计算机都是相同的平台,那么您可以使用本机字节顺序,以获得轻微的性能提升和代码简化。