程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> c語言中十六進制轉二進制顯示的實現方法

c語言中十六進制轉二進制顯示的實現方法

編輯:C語言基礎知識

代碼如下:

//======================================

//輸出格式: hex2bin 5e.

//得到: 0101 1110

//======================================

#include <stdio.h>
#include <limits.h>

char *bitstr(char *, void const *, size_t);

int main(int argc, char **argv)
{

   unsigned char value;
   char *pointer;
   char ebits[CHAR_BIT * sizeof value + 1];

  
   value = 0;

   for (pointer = argv[1]; *pointer; ++pointer) {
     value <<= 4;
     switch (*pointer) {
        case 'a':
        case 'A':
            value += 0xa;
            break;
        case 'b':
        case 'B':
            value += 0xb;
            break;
        case 'c':
        case 'C':
            value += 0xc;
            break;
        case 'd':
        case 'D':
            value += 0xd;
            break;
        case 'e':
        case 'E':
            value += 0xe;
            break;
        case 'f':
        case 'F':
            value += 0xf;
            break;
        default:
            value += *pointer - '0';
            break;
  }
   }
   bitstr(ebits, &value, sizeof value);
   printf("The binary representation of 0x%s is ", argv[1]);

   for (pointer = ebits, value = 0; *pointer != '\0'; ++pointer) {
    if(value > 3) {
           value = 0;
     putchar(' ');
           putchar(*pointer);
    }
    else {
     value++;
        putchar(*pointer);
    }
   }
  

   return 0;
}

char *bitstr(char *str, const void *obj, size_t n)
{
   unsigned char mask;
   const unsigned char *byte = obj;
   char *const ptr = str;

   while (n--) {
      mask = ((unsigned char)-1 >> 1) + 1;
      do {
         *str++ = (char)(mask & byte[n] ? '1' : '0');
         mask >>= 1;
      } while (mask);
   }
   *str = '\0';
   return ptr;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved