java 中的 0x66756e63 与 10211711099 有什么区别

What is difference 0x66756e63 vs 10211711099 in java

我试过这段代码并打印字节。但是这个显示问题。

        InputStream localInputStream = new FileInputStream(new File(srcName));
        int len = localInputStream.available();
        byte[] arrayOfByte1 = new byte[len];
        localInputStream.read(arrayOfByte1, 0, len);
        for(int i = 0; i < len; i++) {
            System.out.println(arrayOfByte1[i]);
        }

结果:

纯文本:func

十六进制代码:66 75 6E 63(在十六进制编辑器中)

此代码的结果:102 117 110 99

为什么显示这个问题?我在等待答案。谢谢。

当您将数字转换为字符串时(例如通过打印,或使用 String.valueOf,或 Byte.toString),Java(与大多数语言一样)始终使用十进制默认。

如果你想以十六进制打印它,你可以使用 Integer.toHexString,但请注意它不会添加前导零 - 14 变成 "E",而不是“0E”。

System.out.println(Integer.toHexString(arrayOfByte1[i]));