如何将文件转换为 base64 UTF-8 小字节序

本文关键字:UTF-8 字节 base64 文件 转换 | 更新日期: 2023-09-27 18:33:52

美好的一天!

我将二进制文件转换为字符数组:

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 吗?

谢谢!

如何将文件转换为 base64 UTF-8 小字节序

这里没有任何 UTF-8 - 无论如何 UTF-8 都没有字节序,因为它的代码单元大小只是一个字节。

您的代码将更简单,如下所示:

var bytes = File.ReadAllBytes(@"file.wav");
string base64 = Convert.ToBase64String(bytes);

如果随后将字符串写入文件,则会有一个编码,该编码很容易是 UTF-8(默认情况下是),但同样无需担心字节序。

请注意,由于 base64

文本始终采用 ASCII,因此 base64 字符串中的每个字符无论如何都会占用 UTF-8 中的单个字节。即使 UTF-8 确实对多字节值有不同的表示形式,这里也不会有问题。

  • C# char表示 UTF-16 字符元素。所以这里没有 UTF-8。
  • 由于 .net 是小端序,并且由于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 是面向字节的编码,因此字节序不是问题。