2012-10-19 60 views
1

我有兩個字節數組(在Java中)表示兩個(可能爲負數)數字。比較字節數組

我如何比較它們(即找出哪一個更小/更大)?

目前,我只是通過將它們復活成兩個java的int然後進行比較來比較它們。但是,如果其中一個字節數組表示負數和另一個正數,那麼結果就會錯誤。不可能判斷最左邊的位是符號還是數字的一部分,對不對?

謝謝

+1

你是怎麼比較的? – r0ast3d

+2

http://stackoverflow.com/questions/1026761/how-to-convert-a-byte-array-to-its-numeric-value-java - 在這裏查看它。 – user

+0

你的字節是從最重要到最不重要還是其他方式排序的?如果從最多到最少:不是最左邊的位是第一個字節中的符號,而只是所有後續字節中的一部分?你有一個恆定的字節數,或者它們是否有所不同? – jlordo

回答

2

爲什麼要重新發明輪子?使用字節緩衝區:

int a = ByteBuffer.wrap(byteArrayA).getInt(); 
int b = ByteBuffer.wrap(byteArrayB).getInt(); 
System.out.println(a == b); 
+0

當數字爲負時,這會產生不正確的結果。 – user1508893

+0

您可以使用ByteBuffer指定順序。 order(ByteOrder.BIG_ENDIAN) –

+0

對於256位數字呢?整數將溢出... –