在java中将字符串字节[]转换为原始字节[]
如果我有一个在java中将字符串字节[]转换为原始字节[],java,string,bytearray,Java,String,Bytearray,如果我有一个字节[],它以这种格式保存字符串: abcd 546546545 dfdsfdsfd 5415645 我知道这些数字是整数型的。使用String.split()方法从中提取原始byte[]的最佳方法是什么?此答案基于以下假设(根据您发布的内容,这些假设都没有明确的依据): 您当前正在直接从文件中读取字节 该文件存储在VM的默认编码中 您希望忽略所有不是十进制数字的内容 您希望生成一个字节[],其中每个字节包含与文件中的十进制数字对应的数值 根据这些假设,我将按如下方式解决此问题
字节[]
,它以这种格式保存字符串:
abcd 546546545 dfdsfdsfd 5415645
我知道这些数字是整数型的。使用
String.split()
方法从中提取原始byte[]
的最佳方法是什么?此答案基于以下假设(根据您发布的内容,这些假设都没有明确的依据):
- 您当前正在直接从文件中读取字节
- 该文件存储在VM的默认编码中
- 您希望忽略所有不是十进制数字的内容
- 您希望生成一个
,其中每个字节包含与文件中的十进制数字对应的数值字节[]
public byte[] getDigitValues(String file) throws IOException {
FileReader rdr = new FileReader(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
rdr = new BufferedReader(rdr);
for (char c = rdr.read(); c != -1; c = rdr.read()) {
if (c >= '0' && c <= '9') {
bos.write(c - '0');
}
}
} finally {
if (rdr != null) {
try { rdr.close(); }
catch (IOException e) {
throw new IOException("Could not close file", e);
}
}
}
return bos.toByteArray();
}
你能举一个例子说明你想如何转换它,因为你有很多方法可以做到这一点吗?“dfdsfdsfd”是一个整数吗?你为什么不想使用split?请重新表述你的问题。这没有多大意义。
字节[]
如何保存字符串?“原始字节[]
”是什么意思?byte[]
如何保存像546546545
这样的整数值?如果有一个byte[]
包含要转换为byte[]
长度一半(忽略空格)的hexi十进制数对,这是有意义的我正在将文件中的字符串读入字节数组,然后我想将其转换为原始字节@TedHoppIn Java,字符串通常读入char[]
。要将它们读入字节[]
,需要使用编码。(我怀疑您只是在使用文件的编码;如果是这样,您需要让我们知道正在使用什么编码。)我仍然不知道您所说的“原始字节”是什么意思。一个字节就是一个字节;什么使字节成为“原始”?您的意思是要将每个十进制数字的数值存储在单独的字节中吗?非数字字符呢?谢谢,谢谢你的回答!
public byte[] getDigitValues(String file) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try (Reader rdr = new BufferedReader(new FileReader(file))) {
for (. . .
}
return bos.toByteArray();
}