如何使用Java读取ASCII字符?

时间:2017-08-03 15:23:51

标签: java

我的要求是将数字转换为二进制格式并读取二进制数据并使用它(如字符串的反向等)。

我的输入是int i=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代码正在阅读"‰"这个符号并将其转换为"?"

有什么方法可以直接阅读"‰"符号并将其打印在控制台上?

2 个答案:

答案 0 :(得分:2)

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

这会导致"输出"。

中的奇怪字符

将数据保持为二进制不等于将十进制整数转换为二进制。

您选择的持久性类型(二进制文本,文本)取决于您,但您应该记录正确的做法(对于二进制文件Stream,请考虑Reader / Writer文本,并保持一致)。

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

答案 1 :(得分:0)

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

Integer#toBinaryString(int i) - 返回数字的字符串二进制表示 Integer#parseInt(String s) - 从String返回int StringBuilder#reverse() - 在StringBuilder中反转String

您可以使用Scanner开始:

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());