zoukankan      html  css  js  c++  java
  • how convert large HEX string to binary array ?

    how convert large HEX string to binary

    I have a string with 14 characters . This is a hex represantation of 7bytes. I want to convert it to binary.

    int32_t Hex2Bin( uint8_t * pHexString, uint8_t * pBinArray )
    {
      int o = 0;
      int i = 0;
    
      while ( pHexString[ i ] != 0x00 )
      {
        switch ( pHexString[ i ] )
        {
          case '0':
            pBinArray[ o ] = 0x00;
            break;
          case '1':
            pBinArray[ o ] = 0x10;
            break;
          case '2':
            pBinArray[ o ] = 0x20;
            break;
          case '3':
            pBinArray[ o ] = 0x30;
            break;
          case '4':
            pBinArray[ o ] = 0x40;
            break;
          case '5':
            pBinArray[ o ] = 0x50;
            break;
          case '6':
            pBinArray[ o ] = 0x60;
            break;
          case '7':
            pBinArray[ o ] = 0x70;
            break;
          case '8':
            pBinArray[ o ] = 0x80;
            break;
          case '9':
            pBinArray[ o ] = 0x90;
            break;
          case 'A':
          case 'a':
            pBinArray[ o ] = 0xa0;
            break;
          case 'B':
          case 'b':
            pBinArray[ o ] = 0xb0;
            break;
          case 'C':
          case 'c':
            pBinArray[ o ] = 0xc0;
            break;
          case 'D':
          case 'd':
            pBinArray[ o ] = 0xd0;
            break;
          case 'E':
          case 'e':
            pBinArray[ o ] = 0xe0;
            break;
          case 'F':
          case 'f':
            pBinArray[ o ] = 0xf0;
            break;
          default:
            return -1;
        }
    
        if ( pHexString[ i + 1 ] == 0x00 )
          return -1;
    
        switch ( pHexString[ i + 1 ] )
        {
          case '0':
            pBinArray[ o ] |= 0x00;
            break;
          case '1':
            pBinArray[ o ] |= 0x01;
            break;
          case '2':
            pBinArray[ o ] |= 0x02;
            break;
          case '3':
            pBinArray[ o ] |= 0x03;
            break;
          case '4':
            pBinArray[ o ] |= 0x04;
            break;
          case '5':
            pBinArray[ o ] |= 0x05;
            break;
          case '6':
            pBinArray[ o ] |= 0x06;
            break;
          case '7':
            pBinArray[ o ] |= 0x07;
            break;
          case '8':
            pBinArray[ o ] |= 0x08;
            break;
          case '9':
            pBinArray[ o ] |= 0x09;
            break;
          case 'A':
          case 'a':
            pBinArray[ o ] |= 0x0a;
            break;
          case 'B':
          case 'b':
            pBinArray[ o ] |= 0x0b;
            break;
          case 'C':
          case 'c':
            pBinArray[ o ] |= 0x0c;
            break;
          case 'D':
          case 'd':
            pBinArray[ o ] |= 0x0d;
            break;
          case 'E':
          case 'e':
            pBinArray[ o ] |= 0x0e;
            break;
          case 'F':
          case 'f':
            pBinArray[ o ] |= 0x0f;
            break;
          default:
            return -1;
        }
    
        i += 2;
        o++;
      }
    
      return o;
    }
  • 相关阅读:
    字典操作
    集合操作
    字符编码与转码
    基于Vue的WebApp项目开发(二)
    算法之递归
    webpack学习(一)
    基于Vue的WebApp项目开发(一)
    webpack踩坑之旅
    vue2.0中的watch和计算属性computed
    vue2.0路由写法、传参和嵌套
  • 原文地址:https://www.cnblogs.com/shangdawei/p/4601371.html
Copyright © 2011-2022 走看看