Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java';s Files.readAllBytes(path.get(path))生成无符号字节_Java - Fatal编程技术网

Java';s Files.readAllBytes(path.get(path))生成无符号字节

Java';s Files.readAllBytes(path.get(path))生成无符号字节,java,Java,所以我的问题是,我想将任何文件作为字节数组读取,然后对其进行处理。但是,“使用它做点什么”不起作用,因为如果使用的字节超出了有符号字节的范围,则这些方法会引发异常,而这正是Files.readAllBytes(path.get(path))产生的结果。例如,我测试的文件的第一个字节是11101111(=-17)。然而奇怪的是,文本文件并没有出现这个问题 所以我的问题是,为什么Files.readAllBytes(path.get(path))会产生无符号字节,如果它们据称在java中根本不存在(

所以我的问题是,我想将任何文件作为字节数组读取,然后对其进行处理。但是,“使用它做点什么”不起作用,因为如果使用的字节超出了有符号字节的范围,则这些方法会引发异常,而这正是
Files.readAllBytes(path.get(path))
产生的结果。例如,我测试的文件的第一个字节是
11101111(=-17)
。然而奇怪的是,文本文件并没有出现这个问题

所以我的问题是,为什么
Files.readAllBytes(path.get(path))
会产生无符号字节,如果它们据称在java中根本不存在(或不受支持),我该如何避免这种情况


如果有任何帮助,我将不胜感激。

我认为您被欺骗了。默认情况下,您会打印字节的签名表示

返回表示此字节值的字符串对象该值被转换为有符号十进制表示形式,并作为字符串返回,就像字节值作为toString(byte)方法的参数给出一样

但是字节仍然是有符号的:)这是您的工作,将其作为有符号值处理。

例如:

byte sample = (byte) -1;
System.out.println(Integer.toBinaryString(sample & 0xFF))
将打印:

11111111

Java不支持有符号字节,至少不直接支持。我不确定你的问题是什么:你的方法需要有符号的字节吗?或者仅仅是字节的值小于128?@BobDalgleish:Java不支持无符号字节。字节就是字节。它包含8位。默认情况下,一位被视为符号位,字节显示为符号号。但如果愿意,您可以选择将其转换为无符号int(或short),并将其显示为无符号数。您必须提供您正在使用的代码,并告诉我们您希望它做什么,如果您需要帮助,它会做什么。事实上,这个问题没有多大意义。