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;
    }
  • 相关阅读:
    关于JDK和JRE的一些总结
    Jackson 格式化日期问题
    CentOS6.8安装mysql5.6
    CentOS6.8安装JDK1.7
    VMware NAT方式 CentOS 6.8配置静态IP
    CentOS6.8使用源码安装Git
    关于SourceTree License
    记录平时遇到的问题
    使用React-Router遇到的那些坑
    移动端响应式布局好文收集
  • 原文地址:https://www.cnblogs.com/shangdawei/p/4601371.html
Copyright © 2011-2022 走看看