Javaでは機能するがC#では機能しないコードを変換しています
byte[] buffer = new byte[64];
this.buffer[((int)this.count & 0x3F)] = -128;
これにより、コンパイル時エラー「定数値「-128」を「バイト」に変換できません」が生成されます。1バイトに負の数を格納するにはどうすればよいですか?
C#では、aは符号なしbyte
8ビット整数を表すため、負の値を保持することはできません(有効な値の範囲はからまで)。別の方法は、です。これは、符号付き8ビット整数(からの有効な値)です。0
255
sbyte
-128
127
Javaのbyte
データ型は署名されています(-128–127)。C#の同等のデータ型はですsbyte
。
したがって、同等のC#コードは次のとおりです。
sbyte[] buffer = new sbyte[64];
buffer[..] = -128;
符号なしバイト(0〜255)の配列が必要な場合byte
、-128と同じビットパターンのsbyte
は128(0x80)です。
byte[] buffer = new byte[64];
buffer[..] = 128;