符号付きバイト配列から始めて、符号なしに変換します..印刷結果は正しいですか?
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 (符号なし) ではありません!?
sbyte
-128 ~ 127
byte 0 ~ 255 なので
そう??