[英]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.