gpt4 book ai didi

java - 读取java中存储为ascii字符的整数值

转载 作者:行者123 更新时间:2023-12-01 12:18:01 25 4
gpt4 key购买 nike

ImageMagick 的原始 rgb 数据格式基本上是一些作为 ascii 值保存到文件中的整数。例如当它存储 42 并且我在简单的文本编辑器中打开日期时,我在该位置看到“* ”(或 36->$ ...)。我想把这个值读入java程序。我已经尝试过类似的方法:

br = new BufferedReader(new FileReader(fileName));          
while ((sCurrentLine = br.readLine()) != null) {
for (int i=0;i<sCurrentLine.length();i++) {
char chr = sCurrentLine.charAt(i);
int ascii = (int) chr;
}
}

这样我就可以按原样读取值,但是某些特定字符(例如换行符(NL ascii:10)或类似字符)会出现问题。有没有更好的方法来读取这样的文件,例如二进制读取或其他什么?

最佳答案

byte[] bytes = Files.readAllBytes(Paths.get("C:/temp/test.png"));

一个字节,其值介于 -128 和 127(带符号)之间。对于无符号值:

int value = bytes[i] & 0xFF;
<小时/>

现在java有点特殊,因为char和String保存Unicode文本,因此FileReader对文件中字节的默认平台编码进行转换。除了效率低下之外,Linux 服务器上的默认编码可能是 UTF-8(一种多字节编码)。那会失败,因为没有给出 char 和 byte 之间的一对一对应关系。在西欧 Windows 上,特殊引号可能会变成高 Unicode 字符 > 255。

因此最好不要将 char/String/Reader/Writer 用于纯二进制数据。

关于java - 读取java中存储为ascii字符的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26865474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com