9

Javaでは機能するがC#では機能しないコードを変換しています

byte[] buffer = new byte[64];
this.buffer[((int)this.count & 0x3F)] = -128;

これにより、コンパイル時エラー「定数値「-128」を「バイト」に変換できません」が生成されます。1バイトに負の数を格納するにはどうすればよいですか?

4

2 に答える 2

16

C#では、aは符号なしbyte8ビット整数を表すため、負の値を保持することはできません(有効な値の範囲はからまで)。別の方法は、です。これは、符号付き8ビット整数(からの有効な値)です。0255sbyte-128127

于 2013-02-18T15:07:25.710 に答える
9

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;

参照: 整数型テーブル(C#リファレンス)

于 2013-02-18T15:08:40.353 に答える