繁体   English   中英

NSData到NSString返回Null

[英]NSData to NSString returns Null

我搜索过了。 但仍然无法得到它。

我正在将NSdata转换为NSString。 当我做[data description]; 它返回我<00000000 31323334 35363738>是的,我收到我的字符串@“12345678”。

如何将其正确转换为NSString? 我试过了

NSString *b = [NSString stringWithUTF8String:[data bytes]];
NSString *a = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSUTF8StringEncoding];

两者都返回null。 任何的想法? 谢谢

大家好,感谢您的所有建议。 它似乎是不变的,因此永远是一个空洞的角色。 因此,每当我收到某些内容时,我只删除第一个<00000000>,然后它的工作正常

如果编码不正确,会发生这种情况。

尝试使用ASCII测试。 ASCII几乎可以肯定地用于检索某些字符串。 如果它只是数字,它可能会起作用。

NSString *a = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSASCIIStringEncoding];

除UTF-8外,最常见的是:

NSASCIIStringEncoding
NSUnicodeStringEncoding
NSISOLatin1StringEncoding
NSISOLatin2StringEncoding
NSSymbolStringEncoding

尝试一下,看看它们是否有效。

我正在将NSdata转换为NSString。 当我做[数据描述]; 它返回我<00000000 31323334 35363738>是的,我收到我的字符串@“12345678”。

不 - 你没有收到那个字符串。 您正在接收一个以一堆0x00值开头的字节序列,后跟一系列恰好对应于ASCII序列“12345678”的字节。

即你有原始数据,并试图将其转换为约束类型,但不能,因为约束类型不能代表原始数据。

您可以尝试在NSString上使用“有损转换”API,但这可能不起作用,无论如何都会很脆弱。

最好的选择?

仅将实际表示字符串的NSData中的字节转换为NSString的实例。 这可以使用-initWithBytes:length:encoding:来完成-initWithBytes:length:encoding: ; 你需要进行计算才能找到正确的偏移量和长度。

这可能是因为数据的第一个字节是00.字符0是字符串字符的结尾。 从ASCII(从字符数组或字节数组开始)创建字符串时,如果在开头遇到字符0,则会生成一个空字符串。

但是我希望它返回一个带有0个字符的NSString实例,而不是null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM