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

标签 java encoding binary hex base64

我想把一个文件(.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

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

我想知道,还有什么好的办法吗?

非常感谢! :)

最佳答案

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

Base64 encoding schemes are commonly used when there is a need to encode binary data that needs be stored and transferred over media that are designed to deal with textual data

在我的实践中,当通过网络服务发送附件时,我用它来传输它们。 (这是政府规定的(该项目是关于电子政务的))

关于java - 将二进制数据转换为字符数据的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4276721/

相关文章:

binary - 无法让 selenium webdriver 在 azure databricks 中工作

java - 确保使用二进制字符串收敛到 0,而不是 -1

java - Hadoop作业在通过终端运行时未映射任何输出,但在Eclipse中运行良好

java - JSP 不使用 Spring MVC 进行评估

java - 是否建议在 Junit 中抛出异常?

java - 为 MediaCodec 设置的有效比特率是多少

java - 一个 21 字节的 UTF-8 序列如何来自 5 个字符?

java - 将 0-256 范围内的二维 int 数组转换为灰度 png?

mysql - latin-1 到 utf-8 数据移植

c - 如何在 C 中将纪元十进制时间转换为 64 位二进制并返回十进制