欢迎unsafe
登陆。
我正在对一个遗留库进行 P/Invoke,它以未知长度的非托管字节缓冲区的形式为我提供了一个以 0 结尾的 C 样式字符串,该缓冲区可以是 ASCII或UTF-16,但没有给出任何指示- 除了字节流本身...
现在我有一个糟糕的方案,基于检查单字节和双 0 字节,来决定是否应该创建一个托管String
的 fromChar*
或SByte*
. 对于每个高于U+00FF
.
这就是我所拥有的:
- 非托管字节缓冲区的地址。
- 非托管字节缓冲区的长度未知。
- 非托管字节缓冲区是一个以 0 结尾的 ASCII C 样式字符串或一个以 0 结尾的 UTF-16 C 样式字符串。
这就是我要的:
- 从非托管字节缓冲区创建正确
String
的托管字节缓冲区,无论是 ASCII 还是 UTF-16。
这个问题一般可以解决吗?