gpt4 book ai didi

c# - byte[] 数组不能转换为 Base64 字符串吗?

转载 作者:行者123 更新时间:2023-11-30 20:15:03 28 4
gpt4 key购买 nike

除了 byteArray 为 null 之外,是否有任何 byte[] 的组合会导致此操作失败?

var myString = Convert.ToBase64String(byteArray);

我在想……以字节零(空?)开始或结束。一个空的 byte[]?非常大的 byte[]?一些在 Base64 中没有意义的字节序列?我的问题是未知数。

最佳答案

Is there any combination of a byte[] that will cause this to fail

byte[] byteArray = null;
var myString = Convert.ToBase64String(byteArray);
// NullArgumentException.

other than byteArray being null?

没有。

starting or ending with byte zero (null?)

以 0 结尾:

var byteArray = new byte[] {255, 255, 0};
var myString = Convert.ToBase64String(byteArray);
Console.WriteLine(myString); // +voA

前导 0:

var byteArray = new byte[] {0, 250, 250};
var myString = Convert.ToBase64String(byteArray);
Console.WriteLine(myString); // APr6

顺便...

var byteArray = new byte[] {250, 250};
var myString = Convert.ToBase64String(byteArray);
Console.WriteLine(myString); // +vo=

不,这不仅仅是忽略 0。

An Empty byte[]?

var byteArray = new byte[] {};
var myString = Convert.ToBase64String(byteArray);
Console.WriteLine(myString.Length); // 0

空字符串。

A very large byte[]?

恩...

var byteArray = new byte[int.MaxValue]; // OutOfMemoryException

嗯...

var byteArray = new byte[int.MaxValue / 8];
var myString = Convert.ToBase64String(byteArray);
Console.WriteLine(myString.Length); // 357913940

它幸免于难。

Some sequence of bytes that wouldn't make sense in Base64?

不存在这样的事情。您将输入作为二进制(基数 2),将基数转换为基数 64,并遵循表示标准。


My issue is the unknown unknowns.

一般来说,坚持the documentation并且不要尝试做没有记录的事情。

我想平台中可能存在错误。 有一些错误,据我所知,ToBase64String 中没有。但是 - 一般来说 - 修复它们或解决它们不是您的责任(有时您必须这样做)。如果您偶然发现了一个,请报告。

错误在于它们在被发现之前都是未知的未知数。你可以试试看看herehere .除此之外,如果我不认识他们,我将如何向您指出他们?

哦,你想找 bug ?好吧,测试(就像我对这个答案所做的那样),并查看源代码( reference source.NET Core )。 嘿,他们正在使用 ReadOnlySpan,我想这就是它没有因大型数组而爆炸的原因。

关于c# - byte[] 数组不能转换为 Base64 字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57663918/

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