![](/img/trans.png)
[英]C# Signed & Unsigned Integral to Big Endian Byte Array, and vice versa using Bitwise way with “best” performance
[英]C# byte arrays - signed and unsigned dilemma
我从有符号字节数组开始,然后转换为无符号..那么打印结果正确吗?
byte[] unsigned = new byte[] {10,100,120,180,200,220,240};
sbyte[] signed = Utils.toSignedByteArray(unsigned);
和打印(我只是将它们附加一个StringBuilder):
签名:[10,100,120,-76,-56,-36,-16]
未签名:[10,100,120,180,200,220,240]
哪里:
public static sbyte[] toSignedByteArray(byte[] unsigned){
sbyte[] signed = new sbyte[unsigned.Length];
Buffer.BlockCopy(unsigned, 0, signed, 0, unsigned.Length);
return signed;
}
如果我改成这个,我得到相同的结果。
sbyte[] signed = (sbyte[])(Array)unsigned;
-128(带符号)不应该变成0,-118(带符号)不应该变成10,依此类推..而不是10(带符号)= 10(无符号)!
因为
字节-128至127
字节0至255
所以??
有符号整数在二进制补码系统中表示 。
例子:
Bits Unsigned 2's complement
value value
00000000 0 0
00000001 1 1
00000010 2 2
01111110 126 126
01111111 127 127
10000000 128 −128
10000001 129 −127
10000010 130 −126
11111110 254 −2
11111111 255 −1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.