明示的なレイアウトのヘルパー構造体を使用して、ダブルをバイトに変換して戻すことができます。
[StructLayout(LayoutKind.Explicit)]
public struct DoubleStruct
{
[FieldOffset(0)]
public double value;
[FieldOffset(0)]
public byte byte0;
[FieldOffset(1)]
public byte byte1;
[FieldOffset(2)]
public byte byte2;
[FieldOffset(3)]
public byte byte3;
[FieldOffset(4)]
public byte byte4;
[FieldOffset(5)]
public byte byte5;
[FieldOffset(6)]
public byte byte6;
[FieldOffset(7)]
public byte byte7;
}
以下の例では、2つの同一構造体生成:
byte[] bytes = new[] { ds1.byte0, ds1.byte1, ds1.byte2, ds1.byte3,
ds1.byte4, ds1.byte5, ds1.byte6, ds1.byte7 };
:バイト配列、使用ヘルパー構造体を変換する
DoubleStruct ds = new DoubleStruct { value = -36524.063415093093 };
DoubleStruct ds1 = new DoubleStruct
{
byte0 = 0xDD,
byte1 = 0x16,
byte2 = 0x7F,
byte3 = 0x07,
byte4 = 0x82,
byte5 = 0xD5,
byte6 = 0xE1,
byte7 = 0xC0
};
を