gpt4 book ai didi

c# - 为什么 Guid.ToString ("n") 与从同一 guid 的字节数组生成的十六进制字符串不同?

转载 作者:可可西里 更新时间:2023-11-01 08:03:37 25 4
gpt4 key购买 nike

考虑以下单元测试:

    [TestMethod]
public void TestByteToString()
{
var guid = new Guid("61772f3ae5de5f4a8577eb1003c5c054");
var guidString = guid.ToString("n");
var byteString = ToHexString(guid.ToByteArray());

Assert.AreEqual(guidString, byteString);
}

private String ToHexString(Byte[] bytes)
{
var hex = new StringBuilder(bytes.Length * 2);
foreach(var b in bytes)
{
hex.AppendFormat("{0:x2}", b);
}
return hex.ToString();
}

结果如下:

Assert.AreEqual failed. Expected:<61772f3ae5de5f4a8577eb1003c5c054>. Actual:<3a2f7761dee54a5f8577eb1003c5c054>.

最佳答案

嗯,它们是一样的,在前 4 个字节之后。而且前四个也是一样的,只是顺序相反而已。

基本上,当从字符串创建时,它被假定为“big-endian”格式:左边的最高字节。然而,当内部存储时(在 Intel-ish 机器上),字节被排序为“little-endian”:右边的最高位字节。

关于c# - 为什么 Guid.ToString ("n") 与从同一 guid 的字节数组生成的十六进制字符串不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3320501/

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