[英]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.