在C#和SQL Server中不同的int转换为guid

前端之家收集整理的这篇文章主要介绍了在C#和SQL Server中不同的int转换为guid前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在C#和sql Server中将int转换为guid时,会得到不同的值.

在C#中我用这个方法

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

Console.Write( Int2Guid( 1000 ).ToString() );
// writes 000003e8-0000-0000-0000-000000000000

sql Server我使用

select cast(cast(1000 as varbinary(16)) as uniqueidentifier)
-- writes E8030000-0000-0000-0000-000000000000

为什么他们的行为会有所不同?

解决方法

这是因为sql server和.net以不同的格式存储int.
这将会诀窍:
select cast(CONVERT(BINARY(16),REVERSE(CONVERT(BINARY(16),1000))) as uniqueidentifier)

猜你在找的C#相关文章