我正在尝试将用 C++ 编写的旧代码重写为 C# - 代码对字符进行二进制操作,但我收到不同的结果(可能由于 C# 中的 Unicode,我做了一些错误的操作)。
我需要将此 C++ 代码重写为 C#:
myChar = 'K' ^ 128;
这段代码在 C++ 中的结果在 C++ 的数据类型 char 中是 -53 ('È')。
C# 中的相同操作会导致 C# 数据类型 char 中的 203(再次为“È”)。
所以 char 没问题,但我需要与 C++ 中相同的字节值(因为我用它进行数学运算)。您能否推荐一种方法,如何将 C# char 安全地转换为等效的 C++ 字节值?
谢谢
最佳答案
在单字节二进制补码表示中,203 是 -53 的无符号解释。
如果您想使用 C++ signed char 的等效表示,类型应为 sbyte
:
sbyte myChar = (sbyte)('K' ^ 128);
请注意,C++ 标准让实现来决定 char
是有符号还是无符号,这意味着某些符合标准的 C++ 将为 myChar
打印 203 ,而不是 -58,无需对您的代码进行任何更改。
关于c# - C# 中的 char (C++) 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41789980/