gpt4 book ai didi

c# - 将 Int 转换为 Guid

转载 作者:IT王子 更新时间:2023-10-29 04:01:52 27 4
gpt4 key购买 nike

我必须将 Convert Int32 转换为 Guid,这就是我想到的。

public static class IntExtensions
{
public static Guid ToGuid(this Int32 value)
{
if (value >= 0) // if value is positive
return new Guid(string.Format("00000000-0000-0000-0000-00{0:0000000000}", value));
else if (value > Int32.MinValue) // if value is negative
return new Guid(string.Format("00000000-0000-0000-0000-01{0:0000000000}", Math.Abs(value)));
else //if (value == Int32.MinValue)
return new Guid("00000000-0000-0000-0000-012147483648"); // Because Abs(-12147483648) generates a stack overflow due to being > 12147483647 (Int32.Max)
}
}

但它有点丑陋。有人有更好的主意吗?

更新:

是的,我知道整个事情很丑陋,但我失去了想法。问题是。我正在获取数据并且必须将其存储到一个我无法更改的表中。发送数据主键是一个 Int,我必须存储它的表主键是一个 Guid。问题是我必须了解发件人在谈论什么对象,但只能将其存储为 Guid。

更新 2:

好的,我知道我必须在此处提供更多信息。我是一个接收数据的 Web 服务,必须将数据传递到我也无法控制的接口(interface)。所以我既不能对接收到的数据进行建模,也不能对必须发送数据的(接口(interface))数据库进行建模。此外,我不得不以某种方式映射这两件事,以便我可以以某种方式更新项目。 感叹

最佳答案

这里有一个简单的方法:

public static Guid ToGuid(int value)
{
byte[] bytes = new byte[16];
BitConverter.GetBytes(value).CopyTo(bytes, 0);
return new Guid(bytes);
}

您可以更改复制发生的位置(索引从 0 到 12 不等)。这实际上取决于您要如何定义这种不寻常的“int 到 Guid”转换。

关于c# - 将 Int 转换为 Guid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4825907/

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