gpt4 book ai didi

c# - 如何在 Convert.TryFromBase64String() 中使用 Span?

转载 作者:行者123 更新时间:2023-11-30 14:22:09 24 4
gpt4 key购买 nike

我正在尝试写一些 try catch对于 Convert.FromBase64String()我发现它已经有 TryFromBase64String()方法。但它需要 3 个参数:

public static bool TryFromBase64String(string s, Span<byte> bytes, out int bytesWritten);

那么我该如何使用 Span<byte> bytes在那里?

我只在文档中找到这个,但没有适当的描述。也许这太明显了。

https://learn.microsoft.com/en-us/dotnet/api/system.convert.tryfrombase64string?view=netcore-2.1

感谢@Damien_The_Unbeliever 和 THIS文章我发现了更多关于 Span 的信息.所以……

Span是用来节省内存的,不要那么频繁调用GC。它可以存储数组或数组的一部分,但我仍然不知道如何在该方法中使用它。

最佳答案

如链接问题中所写,System.Span<T>是 C# 7.2 的新功能(Convert.TryFromBase64String 是更新的 .NET Core 功能)

使用System.Span<>你必须安装一个 nuget 包:

Install-Package System.Memory

然后使用它:

byte[] buffer = new byte[((b64string.Length * 3) + 3) / 4 -
(b64string.Length > 0 && b64string[b64string.Length - 1] == '=' ?
b64string.Length > 1 && b64string[b64string.Length - 2] == '=' ?
2 : 1 : 0)];

int written;
bool success = Convert.TryFromBase64String(b64string, buffer, out written);

在哪里b64string是你的 base-64 字符串。 buffer 的过于复杂的尺寸应该是基于 b64string 长度的缓冲区的确切长度.

关于c# - 如何在 Convert.TryFromBase64String() 中使用 Span?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51300523/

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