2010-04-28 58 views
0

我有這樣的代碼讀取一個8字節的數組並將其轉換爲int64。修改此代碼以讀取反向字節中的字節?

我想知道如何調整這個代碼,所以它會接收到與反向端表示的數據時,工作...

protected static long getLong(byte[] b, int off) 
    { 
     return ((b[off + 7] & 0xFFL) >> 0) + 
       ((b[off + 6] & 0xFFL) << 8) + 
       ((b[off + 5] & 0xFFL) << 16) + 
       ((b[off + 4] & 0xFFL) << 24) + 
       ((b[off + 3] & 0xFFL) << 32) + 
       ((b[off + 2] & 0xFFL) << 40) + 
       ((b[off + 1] & 0xFFL) << 48) + 
       (((long) b[off + 0]) << 56); 
    } 

感謝您的幫助!

回答

1

如何:

protected static long getLong(byte[] b, int off) 
{ 
    return ((b[off + 0] & 0xFFL) >> 0) + 
      ((b[off + 1] & 0xFFL) << 8) + 
      ((b[off + 2] & 0xFFL) << 16) + 
      ((b[off + 3] & 0xFFL) << 24) + 
      ((b[off + 4] & 0xFFL) << 32) + 
      ((b[off + 5] & 0xFFL) << 40) + 
      ((b[off + 6] & 0xFFL) << 48) + 
      (((long) b[off + 7]) << 56); 
} 

盪滌到:

protected static long getLong(byte[] b, int off) { 
    return ((b[off ] & 0xFFL)  ) | 
      ((b[off + 1] & 0xFFL) << 8) | 
      ((b[off + 2] & 0xFFL) << 16) | 
      ((b[off + 3] & 0xFFL) << 24) | 
      ((b[off + 4] & 0xFFL) << 32) | 
      ((b[off + 5] & 0xFFL) << 40) | 
      ((b[off + 6] & 0xFFL) << 48) | 
      ((b[off + 7] & 0xFFL) << 56); 
} 
+0

(編輯:沒關係只注意到了L的中和的。) – cHao 2010-04-28 03:39:21