Bearbeitung von Byte[]

05/08/2008 - 08:15 von Christian Havel | Report spam
Hallo,

ich habe ein Byte-Array wie z.B.
byte[] buffer = new buffer[]{ 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F};

Von jedem Byte möchte ich lediglich die unteren 4 Bit verwenden und diese zu
einem neuen Byte-Array (hàtte bei obigen Daten eine Lànge von 3 Byte)
zusammenführen.

Eine kleinen Hinweis, wie ich dies am geschicktesten machen kann?

Danke Christian
 

Lesen sie die antworten

#1 Frank Dzaebel
05/08/2008 - 10:16 | Warnen spam
Hallo Christian,

ich habe ein Byte-Array wie z.B.
byte[] buffer = new buffer[]{ 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F};
Von jedem Byte möchte ich lediglich die unteren 4 Bit verwenden und diese zu
einem neuen Byte-Array (hàtte bei obigen Daten eine Lànge von 3 Byte)
zusammenführen.



Eine natürliche Herangehensweise wàre wohl etwa:

private void Form1_Load(object sender, EventArgs e)
{
byte[] buffer = new byte[] { 1, 2, 3, 4, 5, 6 };
byte[] newBuffer = ConcatBits(buffer);
}

const int anz = 2;
const int shift = 8 / anz;
const int lowerBits = byte.MaxValue >> shift;

private byte[] ConcatBits(byte[] buffer)
{
int count = 0;
byte[] newBuffer = new byte[buffer.Length / anz];
for (int i = 0; i < buffer.Length; i += anz)
newBuffer[count++] = (byte)(
(buffer[i] << shift) | (buffer[i+1] & lowerBits));
return newBuffer;
}

Implementierungen über "Unsafe Code" sind ja in
Performance-Szenarien manchmal denkbar, würde aber
hier nicht besonders viel bringen.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen