[英]Read Java in as Hex
我已經嘗試解決此問題,但我不斷提出無濟於事的方法,我確信這很容易(當您當然知道的時候;))
我想做的是使用如下所示的字節流讀取文件:
while((read = in.read()) != -1){
//code removed to save space
Integer.toHexString(read);
System.out.println(read);
}
當它在屏幕上打印十六進制時,它將打印出很好的數字,例如31 13 12 0
但是當涉及到應為01 31的十六進制代碼時,它將打印0131。我想將其讀入一個變量,就像您在十六進制編輯器中看到的那樣,即00 11 21 31沒有單個數字,因為我需要掃描整個文件,尋找我知道該怎么做的模式://
簡而言之,我需要一個可變參數來包含兩個十六進制字符,即int temp = 01而不是int temp = 0,我希望一切都有意義,因為凌晨3點,我有點困惑!
如果有人知道該怎么做,我將非常感激,ps感謝您在此站點之前提供的幫助,這為我節省了很多研究工作,並學到了很多東西!
非常感謝。
此方法:
public static void printHexStream(final InputStream inputStream, final int numberOfColumns) throws IOException{
long streamPtr=0;
while (inputStream.available() > 0) {
final long col = streamPtr++ % numberOfColumns;
System.out.printf("%02x ",inputStream.read());
if (col == (numberOfColumns-1)) {
System.out.printf("\n");
}
}
}
將輸出如下內容:
40 32 38 00 5f 57 69 64 65 43
68 61 72 54 6f 4d 75 6c 74 69
42 79 74 65 40 33 32 00 5f 5f
69 6d 70 5f 5f 44 65 6c 65 74
65 46 69 6c 65 41 40 34 00 5f
53 65 74 46 69 6c 65 50 6f 69
6e 74 65 72 40 31 36 00 5f 5f
69 6d 70 5f 5f 47 65 74 54 65
6d 70 50 61 74 68 41 40 38 00
是您要找的東西嗎?
import org.apache.commons.io.IOUtils;
import org.apache.commons.codec.binary.Hex;
InputStream is = new FileInputStream(new File("c:/file.txt"));
String hexString = Hex.encodeHexString(IOUtils.toByteArray(is));
在Java 7中,您可以直接從文件讀取字節數組,如下所示:
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.Path;
Path path = Paths.get("path/to/file");
byte[] data = Files.readAllBytes(path)
我認為您正在尋找的是格式化程序。 嘗試:
Formatter formatter = new Formatter();
formatter.format("%02x", your_int);
System.out.println(formatter.toString());
這就是您想要的嗎? 您的問題不是很清楚(我認為您可能從摘要中刪除了太多代碼)。
大家好,一個人發帖,謝謝您的回復,但是我堅決地做到了:
hexIn = in.read();
s = Integer.toHexString(hexIn);
if(s.length() < 2){
s = "0" + Integer.toHexString(hexIn);
}
只是以為我以后會以其他人的方式發布,所以非常感謝您的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.