我的要求是将数字转换为二进制格式并读取二进制数据并使用它(如字符串的反向等)。
我的输入是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代码正在阅读"‰"这个符号并将其转换为"?"
有什么方法可以直接阅读"‰"符号并将其打印在控制台上?
答案 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());