将二进制数据转换为字符数据的最佳方法是什么?

Koe*_*err 1 java binary base64 encoding hex

我想将文件(.jpg图像文件)转换为txt文件(ASCII码)

现在,我有两个计划,将文件字节转换为Hex,并转换为Base64

  File file=new File("D:/temp/1.jpg");
  byte[] bytes=getBytesFromFile(file);
  System.out.println("bytes:"+bytes.length);//bytes:9006
  String hex=HexUtil.asHex(bytes);
  String base64=Base64.encode(bytes);
  System.out.println("hex:"+hex.length());//hex:18012
  System.out.println("base64:"+base64.length());//base64:12165
Run Code Online (Sandbox Code Playgroud)

我认为Base64更好,因为发送12165比十六进制字符串少.

我想知道,还有其他任何好主意吗?

非常感谢!:)

Boz*_*zho 6

Base64或多或少是将二进制信息作为字符串传输的标准方法.所以,是的,你做得对.维基百科:

当需要编码需要存储和通过旨在处理文本数据的媒体传输的二进制数据时,通常使用Base64编码方案

在我的实践中,我使用它来通过Web服务发送附加文档.(这是由政府监管的(该项目涉及电子政务))