C#でInt型の数値をbyte配列に変換してみる。

コンピュータ

ソースコード:

class SampleClass
{
    public int IntValue { get; set; } = 0;

    public void Save(string path)
    {
        // Intをbyte[]へ変換
        byte[] buff = BitConverter.GetBytes(IntValue);

        // 保存
        using FileStream fs = new(
            path, FileMode.Create, FileAccess.Write);
        fs.Write(buff);
    }
    public void Load(string path)
    {
        byte[] buff = new byte[4];

        // 読み込み
        using FileStream fs = new(
            path, FileMode.Open, FileAccess.Read);
        fs.Read(buff, 0, buff.Length);
        // byte[]からIntへ変換
        IntValue = BitConverter.ToInt32(buff, 0);
    }
}

class Program
{
    static public void Main()
    {
        const string binFile = @"sample.bin";
        SampleClass obj = new();

        obj.IntValue = 65536;

        obj.Save(binFile);

        obj.IntValue = 255;

        obj.Load(binFile);

        Console.WriteLine($"{obj.IntValue}");
    }
}

結果

65536

プログラムの途中でIntValueの値を255にしていますが、Load()でIntValue内容がファイルから復元されて、結果が65536になっています。

以下はVSCodeの拡張機能のHexEditorで表示したsample.binの内容のスクリーンショットです。

65536が00 00 01と並んでおり(リトルエディアン)これを逆順にすると16進数で10000になっていることが確認出来ます。
試しに1減らして65535でFF FF 00の並びになることを確認してみます。

予想通りの結果になりました。

コメント