sar*_*own 3 c# java decode binaryfiles
我知道有很多类型的编码和解码,根据我的阅读,base64是编码二进制文件(图像,mp3,视频)的绝佳选择.
现在,当涉及到解码时,我将需要从base64转换然后获取字符串值.解码后获取字符串的过程,我需要这样做(在c#中):System.Text.Encoding.ASCII.GetString(encodedDataAsBytes);
在这里我注意到我有几个选项来使用什么来获取字符串,如ASCII,UNICODE,DEFAULT.
这篇文章中的真正问题是如果我使用java编码和c#解码二进制文件,我应该使用什么是最好的解决方案/选择?我尝试了几种方法,有些字符无法读取,因此给出了问号符号(?).
然而,可以读取字节的最接近的编码解码就是当我在Java中使用它时:String encoded = Base64.encodeToString(fileData, Base64.CRLF);同时在c#im中使用如下:byte[] encodedDataAsBytes = System.Convert.FromBase64String(encodedData);
string returnValue = System.Text.Encoding.ASCII.GetString(encodedDataAsBytes);
不过,有几个字符无法读取.有没有人有这个问题陈述的解决方案?任何反馈都非常感谢.谢谢你的进步.
关于二进制文件的事情是它们是二进制文件(类型byte[]).大多数情况下,您无法将字节直接转换为字符串(使用Encoding.GetString(byte[])),因为其中一些字符可能具有无法在字符串中表示的值(这正是您所遇到的).
将二进制数据转换为字符串Encoding.GetString(byte[])以将其转换为BASE64完全没有意义,因为在将二进制信息转换为字符串时丢失信息 - 您需要将其直接转换为BASE64.
将字节数组的BASE64字符串表示转换byte[]为OK - 这将返回原始二进制数据.然而,这种转换byte[]对string是不是我上面给出的理由确定.
BASE64编码应该如何工作:
byte[]byte[]byte[]从BASE64字符串创建byte[]