gdo*_*ica 2 .net c# performance .net-core
鉴于这个简单的代码:
private static string GetEncryptedContent(byte[] arrayA, byte[] arrayB, byte[] arrayC)
{
var concatenatedArray = new byte[arrayB.Length + arrayC.Length + arrayA.Length];
Buffer.BlockCopy(arrayB, 0, concatenatedArray, 0, arrayB.Length);
Buffer.BlockCopy(arrayC, 0, concatenatedArray, arrayB.Length, arrayC.Length);
Buffer.BlockCopy(arrayA, 0, concatenatedArray, arrayC.Length + arrayB.Length,
arrayA.Length);
return Convert.ToBase64String(concatenatedArray);
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以对字节数组进行 Base64 编码,而无需分配大小为 a+b+C 的新字节数组?
如果数组相对较大,可以使用租用一个(超大的)数组ArrayPool<byte>.Shared
,复制到租用的数组,然后使用需要 offset+count 的重载ToBase64String
,使用偏移量 0 和已知数据的长度作为计数。然后将租用的阵列返回到池中。
如果已知数组很小,则可以使用需要的重载stackalloc
来创建。Span<byte>
ToBase64String
ReadOnlySpan<byte>
归档时间: |
|
查看次数: |
70 次 |
最近记录: |