如何使用Java读取ASCII字符?

如何使用Java读取ASCII字符?,java,Java,我的要求是将一个数字转换成二进制格式,读取二进制数据并播放(如字符串反转等) 我的输入是inti=12937 下面是我创建二进制数据的代码: int i = 12937 DataOutputStream os = new DataOutputStream(new FileOutputStream("D:\\binout.dat")); os.writeInt(i); os.close(); 输出为:2‰ 我正在读取文件数据并试图打印它,然后它正在打印这个值:2 DataInputStream

我的要求是将一个数字转换成二进制格式,读取二进制数据并播放(如字符串反转等)

我的输入是
inti=12937

下面是我创建二进制数据的代码:

int i = 12937
DataOutputStream os = new DataOutputStream(new 
FileOutputStream("D:\\binout.dat"));
os.writeInt(i);
os.close();
输出为:
2‰

我正在读取文件数据并试图打印它,然后它正在打印这个值:2

DataInputStream d = new DataInputStream(new 
FileInputStream("D:\\binout.dat"));
String count;
while((count = d.readLine()) != null){
    System.out.println(count);
}
产出:2

Java代码正在读取“‰”此符号并将其转换为“?”


是否有任何方法可以直接读取符号“‰”并将其打印在控制台上?

在Java中,您可以使用以下方法:

-返回数字的字符串二进制表示形式
-从字符串返回int。
-反转StringBuilder中的字符串

您可以从
扫描仪开始,使用:

Scanner sc = new Scanner(System.in);
这些东西结合起来应该可以让你解决问题

编辑:

解决问题的代码:

File file = new File("D:\\binout.dat"); 
Scanner scnr = new Scanner(file);
String line = scnr.nextLine(); 
StringBuilder scb = new StringBuilder(); 
reverseString = new StringBuffer(line).reverse().toString(); 
System.out.println("Output is "+line); 
System.out.println("Reverse of string is "+reverseString.toString()); 

您正在以二进制格式编写数据以存储Java原语,但最终通过
DataInputStream
的不推荐的
readLine
方法将其作为文本读取

这会导致“输出”中出现奇怪的字符

将数据持久化为二进制并不等同于将十进制整数转换为二进制

您选择的持久性类型(二进制、文本)由您自己决定,但您应该记录正确的实践(二进制应考虑
Stream
,文本应考虑
Reader
/
Writer
,并保持一致)


要简单地将十进制整数显示为二进制,可以使用
integer.toBinaryString

“转换成二进制格式”到底是什么意思?二进制文件,而不是文本文件(即,在文件中存储与内存中表示完全相同的内容)?或者你的意思是写一个只包含字符“0”和“1”的文本文件?我的要求是将整数值转换并保存为二进制文件格式,如“‰2ð8k”等。。。我必须以字符串格式再次读取数据,并对二进制字符串执行一些操作,如字符串反转等,然后将其保存回同一文件。DataInputStream类不能满足我的要求,Scanner类也能满足我的要求。那么我建议您将文件读入byte[]数组,而不是字符串。如果你读入一个字符串,你正在进行你不想要的字符集解码。谢谢我会尝试一下,让你知道这是一个更好的想法和方法。谢谢@klitoskyriacoucou谢谢你的回答,我认为readLine方法已经被弃用了,dataInputStream并没有解决我的问题。我切换到scanner类,然后它对我来说运行良好。
code
File File File=new File(“D:\\binout.dat”);扫描仪scnr=新扫描仪(文件);String line=scnr.nextLine();StringBuilder scb=新的StringBuilder();reverseString=新的StringBuffer(line.reverse().toString();System.out.println(“输出为”+行);System.out.println(“字符串的倒数是”+reverseString.toString())@kumar是的,因此您现在正在解析为文本。
code
File File文件=新文件(“D:\\binout.dat”);扫描仪scnr=新扫描仪(文件);String line=scnr.nextLine();StringBuilder scb=新的StringBuilder();reverseString=新的StringBuffer(line.reverse().toString();System.out.println(“输出为”+行);System.out.println(“字符串的倒数是”+reverseString.toString());产量为‰2@kumar我在答案中添加了你的代码,这样以后就更容易找到合适的人了