簡體   English   中英

十六進制的字節數組(int格式)

[英]byte array to Hex (in int format)

我有以下函數將字節數組轉換為整數格式的十六進制。

private static int byteArray2Int(final byte[] hash) {
        Formatter formatter = new Formatter();
        for (byte b : hash) {
            formatter.format("%02x", b);
        }

        String str = formatter.toString();
        int hex = Integer.parseInt(str, 16);   //number format exception

        return hex; 
    }

-

而且我正在錯誤以下。 我知道格式化程序的值已經是十六進制的,但是我想以整數格式存儲。

請問我該怎么辦?

Exception in thread "main" java.lang.NumberFormatException: For input string: "202e4724bb138c1c60470adb623ac932"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

如下使用BigInteger,而不要嘗試將其存儲在int中,因為您的String太長而無法容納在int范圍內。

String hex = "202e4724bb138c1c60470adb623ac932";
BigInteger bi = new BigInteger(hex, 16);
System.out.println(bi);

“ 202e4724bb138c1c60470adb623ac932”太大,無法放入int或long中。 這將需要16個字節(如果我沒記錯的話)。

暫無
暫無

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

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