如何在char中转换Byte数组并以Bytes形式写入文件?

时间:2018-10-19 15:27:31

标签: c# arrays file byte

我有一个字节数组,如下所示:

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#方法可以做到这一点。

0 个答案:

没有答案