读取java中存储为ascii字符的整数值
ImageMagick的原始rgb数据格式基本上是将一些整数作为ascii值保存到文件中。e、 g.当它存储42,我在一个简单的文本编辑器中打开日期时,我会在该位置看到“*”(或36->$…)。 我想把这些值读入java程序。我已经试过这样的方法:读取java中存储为ascii字符的整数值,java,file,io,ascii,Java,File,Io,Ascii,ImageMagick的原始rgb数据格式基本上是将一些整数作为ascii值保存到文件中。e、 g.当它存储42,我在一个简单的文本编辑器中打开日期时,我会在该位置看到“*”(或36->$…)。 我想把这些值读入java程序。我已经试过这样的方法: br = new BufferedReader(new FileReader(fileName)); while ((sCurrentLine = br.readLine()) != null) {
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;
}
}
br=new BufferedReader(new FileReader(fileName));
而((sCurrentLine=br.readLine())!=null){
对于(int i=0;i
值介于-128和127(有符号)之间的字节。对于无符号值:
int value = bytes[i] & 0xFF;
现在java有点特别了,因为字符和字符串包含Unicode文本,所以FileReader从文件中字节的默认平台编码进行转换。除了效率低下之外,在Linux服务器上,默认编码可能是UTF-8,一种多字节编码。这将失败,无法在字符和字节之间提供一对一的对应关系。在西欧Windows上,一个特殊的引号可能会变成大于255的高Unicode字符
所以最好不要对纯二进制数据使用char/String/Reader/Writer。只是不要使用readLine()
。使用read()
。但是这看起来更像字节而不是字符。所以你应该使用输入流。@JBNizet一个mmap
edReader
可能会更好。
int value = bytes[i] & 0xFF;