美好的一天!
我将二进制文件转换为char数组:
var bytes = File.ReadAllBytes(@"file.wav");
char[] outArr = new char[(int)(Math.Ceiling((double)bytes.Length / 3) * 4)];
var result = Convert.ToBase64CharArray(bytes, 0, bytes.Length, outArr, 0, Base64FormattingOptions.None);
string resStr = new string(outArr);
那么,它是小端吗? 它会转换为UTF-8吗?
谢谢!
答案 0 :(得分:4)
这里没有任何UTF-8 - 无论如何UTF-8都没有字节序,因为它的代码单元大小只是一个字节。
您的代码将更简单:
var bytes = File.ReadAllBytes(@"file.wav");
string base64 = Convert.ToBase64String(bytes);
如果你把字符串写入一个文件,那么 就会有一个编码,这个编码很容易就是UTF-8(默认情况下会是这样),但是再次没有可用的字节序。
请注意,由于base64文本始终为ASCII,因此base64字符串中的每个字符都将占用UTF-8中的单个字节。即使UTF-8 对多字节值有不同的表示,这也不是问题。
答案 1 :(得分:2)
char
表示UTF-16字符元素。所以这里没有UTF-8。 char
是两个字节宽,因此char
数组和字符串都以小端字节顺序存储。如果要将字节数组转换为base64,然后编码为UTF-8,请执行以下操作:
byte[] base64utf8 = Encoding.UTF8.GetBytes(Convert.ToBase64String(bytes));
如果您希望将base64文本保存为编码为UTF-8的文件,您可以这样做:
File.WriteAllText(filename, Convert.ToBase64String(bytes), Encoding.UTF8);
由于UTF-8是面向字节的编码,因此字节顺序不是问题。