gpt4 book ai didi

c# - 关于可以是 ASCII 或 UTF-16 的编码字符串的建议

转载 作者:太空狗 更新时间:2023-10-30 00:58:17 25 4
gpt4 key购买 nike

欢迎来到不安全的土地。

我正在对遗留库执行 P/Invoke,它以未知长度的非托管字节缓冲区的形式为我提供一个以 0 结尾的 C 风格字符串,该缓冲区可以是 ASCII UTF -16,但没有给出任何指示 - 除了字节流本身......

现在我有一个糟糕的方案,基于检查单和双 0 字节,来决定我是否应该从 Char*S字节*。对于高于 U+00FF 的每个 Unicode 代码点,该方案显然会失效。

这是我的:

  • 非托管字节缓冲区的地址。
  • 非托管字节缓冲区的长度未知。
  • 非托管字节缓冲区是一个以 0 结尾的 ASCII C 风格字符串或以 0 结尾的 UTF-16 C 风格字符串。

这就是我想要的:

  • 从非托管字节缓冲区创建正确的托管 String,无论是 ASCII 还是 UTF-16。

这个问题一般可以解决吗?

最佳答案

我不认为这可以 100% 解决。如果缓冲区包含 6c 34 00 00 ("l4"),那是水的中文符号,还是只是一个 ASCII 小写的 L 和 4?但根据特定的字符串,“大多数时候”应该可以猜对。

UTF-16 是小端还是(可能)大端?

最大的风险是缓冲区溢出。例如,如果缓冲区以 00 开头,那么这是一个零长度的 ASCII 字符串,还是我们应该尝试准备更多缓冲区以将其解释为 UTF-16BE?

关于c# - 关于可以是 ASCII 或 UTF-16 的编码字符串的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3140187/

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