使用TryFromBase64String时无法转换base64字符串

问题描述 投票:0回答:1

我收到一个 Base64 字符串形式的 Guid。通过使用

Convert.FromBase64String(b64)
,转换运行良好,然后我尝试使用
Convert.TryFromBase64String(b64)
,但在这种情况下,该方法返回 false 并且我的字节数组保持为空

var dataString = "kADs1tnSQ+2ehpdtUAK/Jg==";
// output: d6ec0090-d2d9-ed43-9e86-976d5002bf26
Console.WriteLine(new Guid(Convert.FromBase64String(dataString)));

Span<byte> bytes = new();
bool success = Convert.TryFromBase64String(dataString, bytes, out int _);

// output: False, then FormatException
Console.WriteLine(success);
Console.WriteLine(new Guid(success ? bytes : Convert.FromHexString(dataString)));

我想我的问题是

Span
的初始化,因为如果我使用
new byte[16]
,它就可以工作,但是使用固定大小16来编写它是否安全?

c# guid
1个回答
0
投票

您应该为

bytes
提供已分配的空间,例如

// 16 bytes to store parsed GUID
byte[] bytes = new byte[16];

bool success = Convert.TryFromBase64String(dataString, bytes, out int _);
© www.soinside.com 2019 - 2024. All rights reserved.