首页 > 解决方案 > 如何将ulong转换为rowversion

问题描述

参考将 sql server rowversion 转换为 long 或 ulong? 我可以通过代码将 SQL RowVersion 转换为 ulong:

static ulong BigEndianToUInt64(byte[] bigEndianBinary)
{
    return ((ulong)bigEndianBinary[0] << 56) |
           ((ulong)bigEndianBinary[1] << 48) |
           ((ulong)bigEndianBinary[2] << 40) |
           ((ulong)bigEndianBinary[3] << 32) |
           ((ulong)bigEndianBinary[4] << 24) |
           ((ulong)bigEndianBinary[5] << 16) |
           ((ulong)bigEndianBinary[6] <<  8) |
                   bigEndianBinary[7];
}

现在,我面临一个问题,如何将 ulong 转换为 byte [8]?我将 rowversion 的值保存到一个文件中,然后读取它并使用它来进行查询。查询参数应该是 byte[] ,而不是 ulong 。否则,将引发错误。

标签: c#sqlrowversion

解决方案


我从BigEndian.GetBytes Method (Int64)得到了答案

谢谢大家。

    public static byte[] GetBytes(this ulong value)
    {
        return new[]
        {
            (byte)(value >> 56),
            (byte)(value >> 48),
            (byte)(value >> 40),
            (byte)(value >> 32),
            (byte)(value >> 24),
            (byte)(value >> 16),
            (byte)(value >> 8),
            (byte)(value)
        };
    }

推荐阅读