Как конвертировать байтовый массив в char и записать в файл как байты? - PullRequest
0 голосов
/ 19 октября 2018

У меня есть следующий байтовый массив:

byte[] bArray = {0x41, 0x35, 0x42, 0x34, 0x44, 0x33}

Я пытаюсь преобразовать их в char для получения чего-то подобного;

0x41 = 'A'
0x35 = '5'
0x42 = 'B'
0x34 = '4'
0x44 = 'D'
0x33 = '3'

После этогоМне нужно присоединиться к ним, чтобы получить:

byte[] finalByte = { 0xA5, 0xB4, 0xD3}

, затем мне нужно записать эти байты в finalByte в файл.

Таким образом, я могу выполнить свою задачу, выполнивтак:

    public void groupBytes(byte[] bArray , byte[] finalByte )
    {
        byte sto = 0x00;
        int j = 0;
        for (int i = 0; i < bArray .Length; i += 2)
        {
            switch (bArray [i])
            {
                case 0x30: sto = 0x00; break;
                case 0x31: sto = 0x01; break;
                case 0x32: sto = 0x02; break;
                case 0x33: sto = 0x03; break;
                case 0x34: sto = 0x04; break;
                case 0x35: sto = 0x05; break;
                case 0x36: sto = 0x06; break;
                case 0x37: sto = 0x07; break;
                case 0x38: sto = 0x08; break;
                case 0x39: sto = 0x09; break;
                case 0x41: sto = 0x0A; break;
                case 0x42: sto = 0x0B; break;
                case 0x43: sto = 0x0C; break;
                case 0x44: sto = 0x0D; break;
                case 0x45: sto = 0x0E; break;
                case 0x46: sto = 0x0F; break;
                default: continue;
            }
            sto <<= 4;
            switch (bArray [i + 1])
            {
                case 0x30: sto |= 0x00; break;
                case 0x31: sto |= 0x01; break;
                case 0x32: sto |= 0x02; break;
                case 0x33: sto |= 0x03; break;
                case 0x34: sto |= 0x04; break;
                case 0x35: sto |= 0x05; break;
                case 0x36: sto |= 0x06; break;
                case 0x37: sto |= 0x07; break;
                case 0x38: sto |= 0x08; break;
                case 0x39: sto |= 0x09; break;
                case 0x41: sto |= 0x0A; break;
                case 0x42: sto |= 0x0B; break;
                case 0x43: sto |= 0x0C; break;
                case 0x44: sto |= 0x0D; break;
                case 0x45: sto |= 0x0E; break;
                case 0x46: sto |= 0x0F; break;
                default: continue;
            }
            finalByte [j] = sto;
            j++;
        }
    }

Но я уверен, что есть лучший способ сделать это на C #.

...