繁体   English   中英

如何从二进制字符串转换为二进制无符号字符 [关闭]

[英]How to convert from a binary string to binary unsigned char [closed]

第一个问题:我有一个二进制字符串“11001”,我用这个函数将它转换为一个int,该函数将它转换为25,当我返回它时,它返回'25 x19'而不是无符号字符11001。

第二个问题:当我输入二进制字符串“1111”时,屏蔽工作直到达到屏蔽“1000”,但“10000”不起作用 - 屏蔽的最后一次迭代突然起作用。 含义:0001 + 0010 + 0100 + 10000 = 23

而不是 0001 + 0010 + 0100 + 1000 = 15。

有任何想法吗?

我将解释我想做什么:

  1. 我从 .txt 文件中得到一个输入,它是“11001”,我必须将它转换为 UNSIGNED CHAR,即“只是”11001。

我想要做的是将“11001”转换为25,将25转换为11001,然后将其转换为11001 unsigned char。

unsigned char stringToBinary(char tmpSubjectStatus[])
{
    int tmpInteger;
    int tmpBinary = 0; //convert tmpInteger into binary number
    unsigned char tmpBinaryCh;
    int i = 0;
    int mostRightbit = 16;
    tmpInteger = atoi(tmpSubjectStatus); //Convert from string to int
    while (i < 5){
        if (((16 >> i) & tmpInteger) != 0){
            tmpBinary += (16 >> i);
        }
        i++;
    }
    tmpBinaryCh = (unsigned char)tmpBinary;
    return tmpBinaryCh;
}

这是完整的代码: http : //pastebin.com/QNNf3zs7

我不明白你在做什么,但要将一串一和零转换为整数,以下应该有效:

unsigned char stringToBinary(char tmpSubjectStatus[])
{
    int tmpInteger = 0;
    while (*tmpSubjectStatus)
    {
        tmpInteger <<= 1;
        if (*tmpSubjectStatus == '1')
            tmpInteger += 1;
        tmpSubjectStatus++;
    }
    return (unsigned char) tmpInteger;
}

编辑:用 corect 版本替换代码(小错误)。

描述:只要看到一个新数字,(二进制)数字就向左移动 1 位并添加新数字(1 或 0)。 第一次它是多余的,但将整数值零向左移动一位没有效果。

1000 = 2³ = 8 而不是 16。所以你设置的mostRightbit变量对我来说应该是 8。

暂无
暂无

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

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