-3

在 c++ 中,我有常规char(类似于 'J' '0' 等)。Marshal.ReadByte我使用方法在 c# 中阅读了它。所以现在在 c# 中我有字节。如何将此字节转换为字符?所以我想将c++中的'J'转换为c#中的'J'。

4

1 回答 1

1

假设源char使用 ASCII 或 Latin-1 (ISO 8859-1),在 C# 中你会做char ch = (char)Marshal.ReadByte(...);.

这是因为 ASCII 和 Latin-1 编码是 Unicode 的子集。.NETchar是一个 UTF-16 代码单元,只需一个演员表就可以很好地适应其中的每一个。

如果您认为您将处理其他源编码,更好的选择可能是Encoding.GetString()在字节数组上使用。请记住,某些编码需要多个单元来编码单个代码点(UTF-8、EUC-JP、Shift-JIS 等),因此单个char可能不够。

于 2013-06-25T18:49:07.197 回答