У меня есть 3-байтовый массив, который мне нужен
- Преобразовать каждый байт в Nibbles
- Добавить Byte_0.Nibble_0 + Byte_0.Nibble_1 + Byte_1.Nibble_2 как WORD
- Добавить Byte_1.Nibble_0 + Byte_2.Nibble_1 + Byte_2.Nibble_2 как СЛОВО
- Преобразовать каждое СЛОВО в байтовый массив
Вот что я пытался
private static void GetBytesToNibbles(byte[] currentThree, out byte[] a, out byte[] b)
{
var firstLowerNibble = currentThree[0].GetNibble(0);
var firstUpperNibble = currentThree[0].GetNibble(1);
var secondLowerNibble = currentThree[1].GetNibble(0);
var secondUpperNibble = currentThree[1].GetNibble(1);
var thirdLowerNibble = currentThree[2].GetNibble(0);
var thirdUpperNibble = currentThree[2].GetNibble(1);
a= new byte[] {firstLowerNibble, firstUpperNibble, secondLowerNibble, 0x00};
b= new byte[] {secondUpperNibble, thirdLowerNibble, thirdUpperNibble, 0x00};
}
Получить расширение Nibble:
public static byte GetNibble<T>(this T t, int nibblePos)
where T : struct, IConvertible
{
nibblePos *= 4;
var value = t.ToInt64(CultureInfo.CurrentCulture);
return (byte) ((value >> nibblePos) & 0xF);
}
Правильно ли я делаю это, как показано на картинке?Если нет, то может ли кто-нибудь помочь мне с правильным кодом?