源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c语言中十六进制转二进制显示的实现方法

  • 时间:2022-12-27 05:19 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c语言中十六进制转二进制显示的实现方法
[u]复制代码[/u] 代码如下:
//====================================== //输出格式: 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; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部