gpt4 book ai didi

objective-c - 将包含 UTF-8 和空字节的 NSData 转换为字符串

转载 作者:搜寻专家 更新时间:2023-10-30 19:43:23 25 4
gpt4 key购买 nike

我有一个 __NSCFData 对象。我知道里面是什么。

61 70 70 6c 65 2c 74 79 70 68 6f 6f 6e 00 41 52 4d 2c 76 38 00

我尝试使用 initWithData: 和 stringWithUTF8String: 将其转换为字符串,结果显示为“apple,typhoon”。转换在 00 终止

数据其实是

61 a
70 p
70 p
6c l
65 e
2c ,
74 t
79 y
70 p
68 h
6f o
6f o
6e n
00 (null)
41 A
52 R
4d M
2c ,
76 v
38 8
00 (null)

如何在不丢失信息的情况下正确转换它?

最佳答案

stringWithUTF8String 的文档将其第一个参数描述为:

A NULL-terminated C array of bytes in UTF8 encoding.

这就是为什么您的转换在第一个空字节处停止的原因。

您似乎拥有的是一组打包到单个 NSData 中的 C 字符串。您可以单独转换每一个。使用 NSData 方法 byteslength 分别获取指向字节/第一个 C 字符串和总字节数的指针。标准 C 函数 strlen() 将为您提供单个字符串的字节长度。结合这些和一些简单的指针算法,您可以编写一个循环来转换每个字符串,例如,将它们全部存储到一个数组中或将它们连接起来。

如果您在实现解决方案时遇到困难,请提出一个新问题,展示您的代码并解释问题。毫无疑问,有人会帮助您进行下一步。

HTH

关于objective-c - 将包含 UTF-8 和空字节的 NSData 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46980190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com