Как можно грызть (грызут) байты в C#?

Я надеюсь изучать, как получить два откусывания (высоко и низко) от байта с помощью C# и как к блоку два откусывания назад к байту.

Я использую C# и.Net 4.0, если это помогает с тем, какие методы могут быть сделаны и какие библиотеки могут быть доступными.

20
задан leppie 28 May 2013 в 12:01
поделиться

2 ответа

Вы можете «замаскировать» 4 бита байта, чтобы получить полубайт, а затем сдвинуть эти биты в крайнее правое положение в байте:

byte x = 0xA7;  // For example...
byte nibble1 = (byte) (x & 0x0F);
byte nibble2 = (byte)((x & 0xF0) >> 4);
// Or alternatively...
nibble2 = (byte)((x >> 4) & 0x0F);
byte original = (byte)((nibble2 << 4) | nibble1);
32
ответ дан 30 November 2019 в 00:00
поделиться

Я предполагаю, что вы можете выполнять несколько побитовых операций

byte nib = 163; //the byte to split
byte niblow = nib & 15; //bitwise AND of nib and 0000 1111
byte nibhigh = nib & 240; //bitwise AND of nib and 1111 0000
Assert.IsTrue(nib == (nibhigh | niblow)); //bitwise OR of nibhigh and niblow equals the original nib.
0
ответ дан 30 November 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: