-1

整数 (val) 355 があり、型キャストを使用してそれをバイト (b) に変換し、99 を得ました。

int val = 355;
byte b = (byte) val; //b contains 99

今、私はこの 99 を 355 に再び変換することができません。

int returnVal = (int) b; //returnVal contains 99
int converted = returnVal & 0xFF; //converted contains 99

99 を 355 に変換するにはどうすればよいですか?

2 番目のシナリオでは、値が異なります。今、

int val = 161;
byte b = (byte) val; //b contains -95
int returnVal = (int) b; //returnVal contains -95
int converted = returnVal & 0xFF; //converted contains 161

2 番目のシナリオでは、値は正常に変換されますが、最初のシナリオでは変換されません。

4

2 に答える 2

1

int から byte に移動すると、情報が失われます。x & 0xFF任意の入力 x に対して得られます。

そして、このプロセスは元に戻せません。これは、1 ガロンの牛乳をパイント グラスに注ぎ、そのパイント グラスを空のガロンに注ぎ、なぜガロンがいっぱいにならないのか不思議に思うようなものです。

于 2013-09-17T06:34:19.347 に答える
0

最初のシナリオでは、355 は 0x01、0x63 です。1 バイトは 8 ビットしかないため、型キャストの際は 0x01 を無視する必要があります。

于 2013-09-17T06:52:47.233 に答える