簡體   English   中英

C#字節數組-有符號和無符號困境

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM