![](/img/trans.png)
[英]How to read in scandinavic characters from US-ASCII text using java
[英]How to read ASCII characters using 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代碼正在讀取該符號的“‰”並將其轉換為“?”
有什么方法可以直接讀取“‰”符號並將其打印在控制台上?
您正在以二進制格式編寫數據,該格式旨在存儲Java原語,但最終將通過不推薦使用的DataInputStream
readLine
方法將其讀取為文本。
這會導致“輸出”中出現奇怪的字符。
將數據保留為二進制並不等於將十進制整數轉換為二進制。
您選擇的持久性類型(二進制,文本)由您決定,但是您應該記錄自己的正確做法(對二進制文件考慮Stream
,對文本考慮Reader
/ Writer
,並且要保持一致)。
要簡單地將十進制整數顯示為二進制,可以使用Integer.toBinaryString
。
在Java中,您可以使用以下可能有用的方法:
Integer#toBinaryString(int i)
-返回數字的String二進制表示形式
Integer#parseInt(String s)
-從字符串返回int。
StringBuilder#reverse()
-反轉StringBuilder中的字符串
您可以使用以下方法開始使用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());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.