我搜索过了.但仍然无法得到它.
我正在将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];
Run Code Online (Sandbox Code Playgroud)
两者都返回null.任何的想法?谢谢
大家好,感谢您的所有建议.它似乎是不变的,因此永远是一个空洞的角色.因此,每当我收到某些内容时,我只删除第一个<00000000>,然后它的工作正常
Nic*_*Nic 27
如果编码不正确,会发生这种情况.
尝试使用ASCII测试.ASCII几乎可以肯定地用于检索某些字符串.如果它只是数字,它可能会起作用.
NSString *a = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSASCIIStringEncoding];
Run Code Online (Sandbox Code Playgroud)
除UTF-8外,最常见的是:
NSASCIIStringEncoding
NSUnicodeStringEncoding
NSISOLatin1StringEncoding
NSISOLatin2StringEncoding
NSSymbolStringEncoding
Run Code Online (Sandbox Code Playgroud)
尝试一下,看看它们是否有效.
我正在将NSdata转换为NSString.当我做[数据描述]; 它返回我<00000000 31323334 35363738>是的,我收到我的字符串@"12345678".
不 - 你没有收到那个字符串.您正在接收一个以一堆0x00值开头的字节序列,后跟一系列恰好对应于ASCII序列"12345678"的字节.
即你有原始数据,并试图将其转换为约束类型,但不能,因为约束类型不能代表原始数据.
您可以尝试在NSString上使用"有损转换"API,但这可能不起作用,无论如何都会很脆弱.
最好的选择?
仅将实际表示字符串的NSData中的字节转换为NSString的实例.这可以做到-initWithBytes:length:encoding:; 你需要进行计算才能找到正确的偏移量和长度.
| 归档时间: |
|
| 查看次数: |
12905 次 |
| 最近记录: |