gpt4 book ai didi

c# - Java 和 C# 中二进制文件的最佳编码解码

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:40:52 25 4
gpt4 key购买 nike

我知道编码和解码的类型有很多种,据我所知,base64 是编码二进制文件(图像、mp3、视频)的绝佳选择。

现在,当涉及到解码时,我将需要从 base64 进行转换,然后获取字符串值。解码后获取字符串的过程,我需要这样做(在 c# 中):System.Text.Encoding.ASCII.GetString(encodedDataAsBytes);

在这里我注意到我有几种选择来获取字符串,例如 ASCII、UNICODE、DEFAULT。

这篇文章的真正问题是,如果我使用 java 编码并使用 c# 解码二进制文件,我应该使用什么最佳解决方案/选择?我尝试了几种方法,有些字符无法读取,因此给出了问号符号(?)。

然而,可以读取字节的最接近的编码解码是当我在 Java 中使用它时:像这样: byte[] encodedDataAsBytes = System.Convert.FromBase64String(encodedData);
string returnValue = System.Text.Encoding.ASCII.GetString(encodedDataAsBytes);

不过,还是有几个字符无法读取。有人对此问题陈述有解决方案吗?非常感谢任何反馈。感谢您的提前。

最佳答案

二进制文件的特点是它们是二进制的(类型byte[])。大多数情况下,您不能将字节直接转换为字符串(使用Encoding.GetString(byte[])),因为它们中的一些可能具有无法转换的值以字符串表示(这就是您正在经历的)。

使用 Encoding.GetString(byte[]) 将二进制数据转换为字符串以将其转换为 BASE64 根本没有意义,因为在将二进制信息转换为字符串时会丢失信息 - 你' d 需要直接将其转换为 BASE64。

将字节数组的 BASE64 字符串表示形式转换为 byte[] 没问题 - 这会返回原始二进制数据。但是,由于我在上面给出的原因,将此 byte[] 转换为 string 是不可行的。

BASE64 编码的工作原理是:

  1. 获取二进制数据作为byte[]
  2. byte[] 创建 BASE64 字符串
  3. 传输BASE64字符串
  4. 从 BASE64 字符串创建 byte[]
  5. 继续使用 byte[]

关于c# - Java 和 C# 中二进制文件的最佳编码解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12854077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com