2017-11-13 5 views
0

次の配列を長い番号に変換しようとしています。バイト配列をlongに変換する

私の予想される結果:153008(私はそれが10進数またはヘキサだ場合はわからない)

私の実際の結果(私が取得しています何):176

これは私が、私が間違って何をやってなかったものです?

byte bytesArray [] = { -80,85,2,0,0,0,0,0}; 

    long Num = (bytesArray[7] <<56 | 
       bytesArray[6] & 0xFF << 48 | 
       bytesArray[5] & 0xFF << 40 | 
       bytesArray[4] & 0xFF << 32 | 
       bytesArray[3] & 0xFF << 24 | 
       bytesArray[2] & 0xFF << 16 | 
       bytesArray[1] & 0xFF << 8 | 
       bytesArray[0] & 0xFF << 0); 

答えて

1

このようなブラケット追加:

long num = (bytesArray[7] << 56 | 
        (bytesArray[6] & 0xFF) << 48 | 
        (bytesArray[5] & 0xFF) << 40 | 
        (bytesArray[4] & 0xFF) << 32 | 
        (bytesArray[3] & 0xFF) << 24 | 
        (bytesArray[2] & 0xFF) << 16 | 
        (bytesArray[1] & 0xFF) << 8 | 
        (bytesArray[0] & 0xFF) << 0); 

をあなたは常に0に評価bytesArray[x] & [large number]を行う前に、そうでなければ、それは、本当に大きな0xFF<<になります。

結果153008、したがって、成功!

+0

ありがとうございました!.. – Ohad

+0

いいえprob(この回答がOKだった場合は、Acceptedとマークしてください:)) – Stefan

関連する問題