簡體   English   中英

Java:ByteArray為正數,反之亦然

[英]Java: ByteArray to positive number and vice versa conversion

我正在尋找一種方法,如何可逆地將任意長度的byte []轉換為數(字符串表示為數字)。

BigInteger提供解決方案:

byte[] originalBytes = ...
String string = new BigInteger(originalBytes).toString();
...
byte[] decodedBytes = new BigInteger(string).toByteArray();

但是,我不確定如何優雅地擺脫負值(或存儲標志的位置)並保持過程可逆。

編輯:只需更換

String string = new BigInteger(originalBytes).toString();

String string = new BigInteger(1, originalBytes).toString();

1,表示傳遞的數組表示正數( signum = 1)

原版的:

您可以在數組前加零字節:

byte[] original = new byte[] { (byte) 255 };

System.out.println(new BigInteger(original).toString()); // prints "-1"

byte[] paddedCopy = new byte[original.length + 1];
for (int i = 0; i < original.length; i++) {
    paddedCopy[i + 1] = original[i];
}
System.out.println(new BigInteger(paddedCopy).toString()); // prints "255"

這將基本上使符號位無效,使數字無符號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM