Hello
Mein problem ist eig. schon in der Überschrift beschreiben.
Ich möchte ein Struct in ein byte Array convertiern.
Meine frage ist nun ob jm. eine noch bessere lösung kennt oder weiß?
Ich muss dazu sagen, das was das steht klappt schon!!!
Mein ansatz ist momentan dieser.
Mein problem ist eig. schon in der Überschrift beschreiben.
Ich möchte ein Struct in ein byte Array convertiern.
Meine frage ist nun ob jm. eine noch bessere lösung kennt oder weiß?
Ich muss dazu sagen, das was das steht klappt schon!!!
Mein ansatz ist momentan dieser.
C#-Quellcode
-
- [StructLayout(LayoutKind.Explicit, Size = 4)]
- internal struct MysqlPacketHeader {
- [FieldOffset(0)]
- public byte Byte1;
- [FieldOffset(1)]
- public byte Byte2;
- [FieldOffset(2)]
- public byte Byte3;
- [FieldOffset(0)]
- public Payloadlength Payloadlength;
- [FieldOffset(3)]
- public byte SequenceId;
- public int Length => Payloadlength.Length;
- public MysqlPacketHeader(int length, byte sequenceId) : this() {
- Payloadlength = new Payloadlength(length);
- SequenceId = sequenceId;
- }
- }
- [StructLayout(LayoutKind.Explicit, Size = 3)]
- internal struct Payloadlength {
- [FieldOffset(0)]
- public byte Byte1;
- [FieldOffset(1)]
- public byte Byte2;
- [FieldOffset(2)]
- public byte Byte3;
- public int Length => (Byte3 << 16) + (Byte2 << 8) + Byte1;
- public Payloadlength(int length) {
- Byte1 = (byte)(length >> 0 & 0xFF);
- Byte2 = (byte)(length >> 8 & 0xFF);
- Byte3 = (byte)(length >> 16 & 0xFF);
- }
- }
- //Convert
- private void bla() {
- byte[] packedBuffer = new byte[sizeof(MysqlPacketHeader)];
- fixed(byte* packedBufferPtr = packedBuffer){
- *(MysqlPacketHeader*)packedBufferPtr = packet;
- }
- }
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Facebamm“ ()