Hoje vou compartilhar um Método C# que converte byte[] para objeto e vice-versa.

Esse código foi reformulado e retestado.

[sections] [section title=”Método C# que converte byte array para objeto e vice-versa”]

// Convert an object to a byte array
public static byte[] ObjectToByteArray(Object obj)
{
if (obj == null)
return null;
var bf = new BinaryFormatter();
var ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}

// Convert a byte array to an Object
public static Object ByteArrayToObject(byte[] arrBytes)
{
var memStream = new MemoryStream();
var binForm = new BinaryFormatter();
memStream.Write(arrBytes, 0, arrBytes.Length);
memStream.Seek(0, SeekOrigin.Begin);
object obj = binForm.Deserialize(memStream);
return obj;
}

[/section] [/sections] Utilize dessa forma:

[sections]
[section title="Método C# que converte byte array para objeto e vice-versa"]
[Serializable] [StructLayout(LayoutKind.Explicit, Pack = 1, Size = 7)] public struct StBase
{
[FieldOffset(0)] private readonly UInt32 _Valor1;
[FieldOffset(4)] private readonly UInt16 _Valor2;
[FieldOffset(6)] private readonly Byte _Valor3;

public UInt32 Valor1=> _Valor1;
public UInt16 Valor2=> _Valor2;
public Byte Valor3 => _Valor3;
public bool Valor3_7 => ((_Valor3&0x80)==0x80);
}
public static byte[] GetDados(StBase pgm)
{
var b = new List();
b.AddRange(ObjectToByteArray(pgm));
return b.ToArray();
}
public static CsProgramaRobo SetDados(byte[] dados)
{
int size = ObjectToByteArray(new StBase()).Length;
var data = new byte[size];
Buffer.BlockCopy(dados, 0, data, 0, size);
return (StBase) ByteArrayToObject(data);
}

[/section]
[/sections]

Obrigado e até o próximo post.

DATEK Tecnologia Eletrônica
[C#] Método C# que converte byte[] para objeto e vice-versa

Deixe uma resposta

%d blogueiros gostam disto: