【问题标题】:PNG file to byte (or bits) to work on it [duplicate]PNG文件到字节(或位)以对其进行处理[重复]
【发布时间】:2017-04-10 15:37:21
【问题描述】:

我有一个学生作业,但我有一些问题。当我试图打开我的 png 文件时,通过这段代码:

File file = new File("png.png");
byte[] fileContent = Files.readAllBytes(file.toPath());

for (int i=0; i<fileContent.length; i++)
    System.out.println(fileContent[i]);

我注意到大于 128 的字节被转换为负值。例如第一个值(在 PNG 结构中)是 137,在我的 eclips 视图中是 -119。怎么了?我做错了什么,还是我必须以某种方式将负值转换为不同的值?

我想在这个结构上添加操作(但首先我需要了解这些位...)

【问题讨论】:

标签: java


【解决方案1】:

一个字节只能接受 -128 到 +127 之间的值。您提到的 137 将环绕成为 -119。

如果您绝对需要无符号数,则需要将其转换为 int 并执行适当的位掩码:

int value = ((int)fileContent[i]) & 0xff;

【讨论】:

  • 只要fileContent[i] &amp; 0xff 就足够了,因为byte 必须以任何方式提升为int
  • 同意,但添加演员表向以后维护代码的人表明了明确的意图。
  • 感谢您的回答帮助:)
猜你喜欢
  • 2017-02-16
  • 2022-01-02
  • 2014-10-16
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
相关资源
最近更新 更多