2014-10-30 180 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

相关问题