【发布时间】:2015-07-25 12:08:16
【问题描述】:
我想将一个字节转换为 sbyte,而不更改任何位。
byte b = 0x84;
sbyte sb = unchecked((sbyte)b);
Console.WriteLine("0x" + Convert.ToString(b, 16));
Console.WriteLine("0x" + Convert.ToString(sb, 16));
这样做的结果将是:
0x84
0xff84
我了解结果的含义以及它发生的原因。但是,我似乎无法找出我能做些什么来避免这种行为。如何复制一个字节的实际二进制值并将其放入一个 sbyte 中?
【问题讨论】:
-
不会因为 sbyte 使用二进制补码而导致位不同吗?
标签: c# casting unsigned signed