簡體   English   中英

如何使用Java讀取ASCII字符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM