using System; using System.Buffers.Binary; public struct ExtendInt : IBytesConverter { public int Value { get; set;} public byte[] GetBytes() { var result = BitConverter.GetBytes(Value); if (BitConverter.IsLittleEndian) { Array.Reverse(result); } return result; } public void SetBytes(byte[] bytes, int offset = 0) { byte[] subBytes = new byte[GetSize()]; Array.Copy(bytes, offset, subBytes, 0, GetSize()); Value = BinaryPrimitives.ReadInt32BigEndian(subBytes); } public int GetSize() => sizeof(int); public override string ToString() => Value.ToString(); static public implicit operator int(ExtendInt value) => value.Value; static public implicit operator ExtendInt(int value) => new ExtendInt { Value = value }; }