繁体   English   中英

将一串数字转换为二进制

[英]converting a string of numbers to binary

如果字符串是“8123”,我首先将字符串数字转换为其整数形式 8123,然后将该数字发送到一个函数,该函数将其转换为二进制。 我得到了与 unsigned long long 一样大的数字,但一旦通过,输出就错误了。 有没有办法通过查看每个数字来转换为二进制。 即寻找 3、2、1 和 8 以转换为二进制。

因此,而不是采取字符串“999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999”,并把它变成一个数字,有没有办法来看看这串的每个字符,并把它转换成二进制?

非常感谢任何建议

伪代码:

string binary_string = ""
#an example
number = 81

while (number != 0)
    #append the string casted value of the remainder of (number / 2) 
    #to the front of binary_string
    binary_string = str(number % 2) + binary_string
    number = number / 2

例如 81:

binary_string = str(81 % 2) + binary_string = str(1) + "" = "1"

数字 = 81 / 2 = 40

binary_string = str(40 % 2) + binary_string = str(0) + "1" = "01"

数量 = 40 / 2 = 20

binary_string = str(20 % 2) + binary_string = str(0) + "01" = "001"

数量 = 20 / 2 = 10

binary_string = str(10 % 2) + binary_string = str(0) + "001" = "0001"

数字 = 10 / 2 = 5

binary_string = str(5 % 2) + binary_string = str(1) + "0001" = "10001"

数字 = 5 / 2 = 2

binary_string = str(2 % 2) + binary_string = str(0) + "10001" = "010001"

数字 = 2 / 2 = 1

binary_string = str(1 % 2) + binary_string = str(1) + "010001" = "1010001"

81 -> “1010001”

string dec2bin(string in) {
    for(size_t i = 0; i < in.length(); i++)
        in[i] -= '0';
    string out;
    while(in.length()) {
        out.insert(0, 1, '0' + (in[in.length()-1]&1));
        char overflow = 0;
        if(in[0]<=1) {
            overflow = 10;
            in.erase(0);
        }
        for(size_t i = 0; i<in.length(); i++) {
            in[i] += overflow;
            overflow = 10 * (in[i]&1);
            in[i] /= 2;
        }
    }
    return out;
}

暂无
暂无

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

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