2014-10-30 60 views
0

這在過去的幾個小時裏一直在困擾着我。 我有一個很長的字符串,我想將它轉換爲一個字節數組。 我也想保留前導零。 已嘗試DatatypeConverter & BigInteger方法並不能得到正確的結果。 這是一個字節數組(十六進制字節值)。在java中將字符串寫入字節數組

byte[] array = str.getBytes(); 

這也似乎沒有工作,所有這些方法我似乎得到字符串的十進制表示形式。我需要它是十六進制。

這是我使用的是在一分鐘的內容:

String line; 
line = file.readLine(); 
long seq = Long.parseLong(line); 
String hexx = Long.toHexString(seq); 
byte[] out = hexx.getBytes(); 

BTW,我使用BufferdReader輸入和RandomAccessFile的輸出。 任何幫助,將不勝感激。

+2

你的問題不清楚(什麼是字符串的十進制表示?)。添加預期輸出的輸入 – njzk2 2014-10-30 17:48:09

+2

您的前導'0'正在消失Long.parseLong()的原因'' – dognose 2014-10-30 17:51:04

+0

輸入文件是一個填充了數字值的ASCII文件。 我希望輸出是一個二進制文件。 – resetter 2014-10-30 17:51:16

回答

1

好的,從一個基數轉換到另一個基數。哎呀!

String str = ... 
int fromRadix = ... 
int toRadix = ... 
String out = new BigInteger(str, fromRadix).toString(toRadix); 

例如,十進制數 「12345」 轉換爲十六進制:

String str = "12345"; 
int fromRadix = 10; 
int toRadix = 16; 
String out = new BigInteger(str, fromRadix).toString(toRadix); 
// yields "3039" 

走開! :P

+0

不,對不起。也許我不清楚,我想將ENTIRE字符串從十進制轉換爲十六進制並將其寫入文件。 – resetter 2014-10-30 18:22:25

+0

這是什麼字符串?數字的十六進制表示(如「011ABF」)或類似的「Hello,world」?如果它是一個十六進制數字,這是有效的。 – 2014-10-30 18:23:39

+0

實際ASCII字符0-9。 – resetter 2014-10-30 18:25:31

0

好吧,我想我已經通過使用BigInteger解決了這個問題,它的方法是toByeArray。

BigInteger linenum = new BigInteger(line,10); 
    writer.write(linenum.toByteArray()); 

其實簡單的解決方案,謝謝你們的努力。

+0

這不符合你的要求。看到我的(新)答案。 – 2014-10-30 19:04:53

相關問題