2017-03-21 1 views
0

私はJavaで型キャストに疑問を持っています。型キャストでは、long型の値をByteに変換できます。このため任意のリアルタイム例がある場合は、Javaでのバイトに長い変換する目的は何ですか。例:はなぜバイトに長いを変換する必要があります。現実世界にそのアプローチの例がありますか?

long l=1000; 
byte b=(byte)l; 
System.out.println(b); 

出力は-24です。ここで1000は-24に変換され、この変換は実際のプロジェクトで使用されます。

+1

あなたは長い/バイトの組み合わせについての特別な何もない、最も狭くなるキャストについて同じことを求めることができます。それはちょうど来る。 – harold

答えて

4

さてあなたは、オブジェクトのみアルファ部分はあなたに関連しているので、今あなたが唯一の第1バイトを取得する必要があり、そのオブジェクトはRGBA情報を保持しているが、整数(32ビット幅)で、色を言うことができます持っていると想像...

int myColor = 999; 
byte alpha = (byte)myColor; 

今アルファが-25で、999は現在-25になっているという事実は全く関係ありません、ポイントはそのキャストが実際にmaskingで、関係のない情報を切り捨て、

ということです

999 = 0000_0011_1110_0111

-25 = 1110_0111

3

ここでは、現実世界の例である:

public byte[] longToBytes(long l) { 
    byte[] bytes = new byte[8]; 
    bytes[0] = (byte)(l >> 56); 
    bytes[1] = (byte)(l >> 48); 
    // ... 
    bytes[7] = (byte)(l); 
    return bytes; 
} 

このコードの目的は自明である...そして、それは型キャストなしでコンパイルされません。

関連する問題