C#でバイト配列の生成

こんにちは。beaglesoftの真鍋です。

EntityFrameworkを利用しているとバイト配列を利用することは結構あると思います。SQL Serverのrowversion型は楽観制御のVersion列として利用することが多いですが、次のようにすると簡単に作成できます。

double d = 1d;
var target = BitConverter.GetBytes(d);
Console.WriteLine(BitConverter.ToString(target));

> 00-00-00-00-00-00-F0-3F

double型は64bitの浮動小数点なので、8バイトです。一方で、SQL Serverのrowversion型も8バイトです。そのため、double型の値からバイト配列を生成することで期待値を作成することができます。

double (C# リファレンス) rowversion.aspx)

もちろん、long型でも問題ないです。

void Main()
{
    var l = 1L;
    var target = BitConverter.GetBytes(l);
    Console.WriteLine(BitConverter.ToString(target));
}


> 01-00-00-00-00-00-00-00

long (C# リファレンス)

ちなみに、int型は32bitなのでこうなります。当たり前ですね。

void Main()
{
    var i = 1;
    var target = BitConverter.GetBytes(i);
    Console.WriteLine(BitConverter.ToString(target));
}

> 01-00-00-00

それにしてもLinqPadが便利ですね。