Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将文件转换为base64 UTF-8 little-endian_C#_Base64_Endianness - Fatal编程技术网

C# 如何将文件转换为base64 UTF-8 little-endian

C# 如何将文件转换为base64 UTF-8 little-endian,c#,base64,endianness,C#,Base64,Endianness,你好 我将二进制文件转换为字符数组: 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); str

你好

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

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吗

谢谢大家!

C字符表示一个UTF-16字符的元素。所以这里没有UTF-8。 由于.net是little endian,而char是两个字节宽的,因此char数组和字符串都以little endian字节顺序存储。 如果要将字节数组转换为base64,然后编码为UTF-8,请执行以下操作:

byte[] base64utf8 = Encoding.UTF8.GetBytes(Convert.ToBase64String(bytes));
如果希望将base64文本保存到一个编码为UTF-8的文件中,可以这样做:

File.WriteAllText(filename, Convert.ToBase64String(bytes), Encoding.UTF8);

由于UTF-8是一种面向字节的编码方式,因此endianness不是一个问题

这里没有任何UTF-8,而且UTF-8也没有endianness,因为它的代码单元大小只有一个字节

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

var bytes = File.ReadAllBytes(@"file.wav");
string base64 = Convert.ToBase64String(bytes);
如果然后将字符串写入文件,则会有一个编码,该编码可以很容易地为UTF-8,并且默认为UTF-8,但同样没有需要担心的endianness


请注意,由于base64文本始终采用ASCII格式,因此base64字符串中的每个字符在UTF-8中都将占用一个字节。即使UTF-8对多字节值有不同的表示,这里也不会有问题。

是的,之后我将base64写入txt-File.writeAllines..,coll@user2545071:对-这就是编码的来源,在前面这样说会很有用:如果不指定编码,那么将使用UTF-8。