重複の可能性:
short と bytes を変換する良い方法は?
4 バイトを 32 ビット符号なし整数に結合するにはどうすればよいですか?
さて、私はこの仮想マシンを開発しており、64 kb のメモリを搭載しています。メモリに byte[] 配列を使用していますが、問題が 1 つあります。2 バイトを short に、または 4 バイトを Int32 に変換するにはどうすればよいですか?
重複の可能性:
short と bytes を変換する良い方法は?
4 バイトを 32 ビット符号なし整数に結合するにはどうすればよいですか?
さて、私はこの仮想マシンを開発しており、64 kb のメモリを搭載しています。メモリに byte[] 配列を使用していますが、問題が 1 つあります。2 バイトを short に、または 4 バイトを Int32 に変換するにはどうすればよいですか?
他の人は BitConverter を提案しました。
ここに別の解決策があります
短い:
var myShort = (short) (myByteArray[0] << 8 | myByteArray[1]);
Int32
var myint = myByteArray[0] << 24 | myByteArray[1] << 16 | myByteArray[2] << 8 | myByteArray[3];
ただし、エンディアンに注意してください。
BitConverterを使用できます。仮想マシンの場合は、予想されるエンディアンを再確認する必要があります (PC のエンディアンと逆になっている場合に備えて)。
// If the system architecture is little-endian (that is, little end first),
// reverse the byte array.
if (BitConverter.IsLittleEndian)
Array.Reverse(bytes);
int i = BitConverter.ToInt32(bytes, 0);
bytes は、変換するバイト配列です。