繁体   English   中英

将字符串转换为十六进制

[英]converting string to hex

我有一个具有0111111100000000000000000000101的字符串

我想将其转换为十六进制,所以我使用了下面的代码

    int assembledHex;
    sscanf(buffer, "%x", &assembledHex);
    printf("this is the assembled hex %x\n",assembledHex);

但是当我打印它时,它的输出为101。我认为sscanf可以从字符串转换为十六进制,这是我做错了什么以及如何解决。 我想要的结果是0x3F800005

这是没有检查或任何东西,也很慢,但这是一个快速的开始:

unsigned int bin_to_int(const char *s) {
    int i;
    unsigned int result;

    result = 0;

    if (s[0] == '1') result++;

    for (i = 1; i < strlen(s); i++) {
        result <<= 1;

        if (s[i] == '1') {
            result++;
        }
    }

    return result;
}

您的sscanf将字符串读取为HEX,但该字符串以二进制形式编写。 您将得到“ 101”,因为int只能存储前8位-每个数字为4位,因此两位= 8位= 1个字节,而8位为4个字节,这是int的大小。 因此,您实际上存储了“ 00000101”,购买printf不会打印前导零,因此您会得到“ 101”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM