如果假设我有一个文件,例如music.mp3或image.jpg要考虑的任何文件.我如何将这些文件的二进制表示形式转换为java中的字符串值,以便我可以查看它?
例如:假设我有文件调用'video.mp4'然后必须101011010101000111010在内存中表示为或类似的东西我需要获取值并将其存储在String中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);
Run Code Online (Sandbox Code Playgroud)
产量
71 77 65 77 65 72 0D 0A 71 77 72 65 0D 0A 72 77 65 72 0D 0A
Run Code Online (Sandbox Code Playgroud)
对于二进制字符串更改代码
String s = "0000000" + Integer.toBinaryString(b);
s = s.substring(s.length() - 8);
sb.append(s).append(' ');
Run Code Online (Sandbox Code Playgroud)
并获得此输出
01110001 01110111 01100101 01110111 01100101 01110010 00001101 00001010
Run Code Online (Sandbox Code Playgroud)
这是解析字符串并写回文件的方法
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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6338 次 |
| 最近记录: |