How do I convert a binary string to hex using C?

前端 未结 4 1178
暖寄归人
暖寄归人 2021-01-21 07:53

How do I convert an 8-bit binary string (e.g. \"10010011\") to hexadecimal using C?

相关标签:
4条回答
  • 2021-01-21 08:11

    How about

    char *binary_str = "10010011";
    unsigned char hex_num = 0;
    
    for (int i = 0, char *p = binary_str; *p != '\0'; ++p, ++i)
    {
        if (*p == '1' )
        {
            hex_num |= (1 << i);
        }
    }
    

    and now you've got hex_num and you can do what you want with it. Note that you might want to verify the length of the input string or cap the loop at the number of bits in hex_num.

    0 讨论(0)
  • 2021-01-21 08:22
    #include <stdlib.h>
    
    strtol("10010011", NULL, 2);
    
    0 讨论(0)
  • 2021-01-21 08:32

    Something like that:

    char *bin="10010011";
    char *a = bin;
    int num = 0;
    do {
        int b = *a=='1'?1:0;
        num = (num<<1)|b;
        a++;
    } while (*a);
    printf("%X\n", num);
    
    0 讨论(0)
  • 2021-01-21 08:36
    void binaryToHex(const char *inStr, char *outStr) {
        // outStr must be at least strlen(inStr)/4 + 1 bytes.
        static char hex[] = "0123456789ABCDEF";
        int len = strlen(inStr) / 4;
        int i = strlen(inStr) % 4;
        char current = 0;
        if(i) { // handle not multiple of 4
            while(i--) {
                current = (current << 1) + (*inStr - '0');
                inStr++;
            }
            *outStr = hex[current];
            ++outStr;
        }
        while(len--) {
            current = 0;
            for(i = 0; i < 4; ++i) {
                current = (current << 1) + (*inStr - '0');
                inStr++;
            }
            *outStr = hex[current];
            ++outStr;
        }
        *outStr = 0; // null byte
    }
    
    0 讨论(0)
提交回复
热议问题