Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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中存储为ascii字符的整数值_Java_File_Io_Ascii - Fatal编程技术网

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

读取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) {

ImageMagick的原始rgb数据格式基本上是将一些整数作为ascii值保存到文件中。e、 g.当它存储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;
    }
}
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
ed
Reader
可能会更好。
int value = bytes[i] & 0xFF;