如果假设我有一个文件,例如music.mp3
or image.jpg
或任何要考虑的文件。我如何将这些文件的二进制表示形式转换为java中的字符串值,以便我可以查看它?
例如:假设我有一个名为'video.mp4'
那么它必须表示为101011010101000111010
或者内存中类似的东西我需要获取值并将其存储在字符串中String s = "101011010101000111010"
有谁知道如何在java中做到这一点吗?
编辑2
我怎样才能将字符串转换回实际文件?
我建议使用十六进制,它更加紧凑和可读
StringBuilder sb = new StringBuilder();
try (BufferedInputStream is = new BufferedInputStream(new FileInputStream("1.txt"))) {
for (int b; (b = is.read()) != -1;) {
String s = Integer.toHexString(b).toUpperCase();
if (s.length() == 1) {
sb.append('0');
}
sb.append(s).append(' ');
}
}
System.out.println(sb);
output
71 77 65 77 65 72 0D 0A 71 77 72 65 0D 0A 72 77 65 72 0D 0A
对于二进制字符串更改代码
String s = "0000000" + Integer.toBinaryString(b);
s = s.substring(s.length() - 8);
sb.append(s).append(' ');
并得到这个输出
01110001 01110111 01100101 01110111 01100101 01110010 00001101 00001010
这是如何解析字符串并将其写回文件
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("2.txt"));
Scanner sc = new Scanner(s);
while (sc.hasNextInt()) {
int b = sc.nextInt(2);
out.write(b);
}
out.close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)