[英]converting a string of numbers to binary
If the string is "8123", I first converted the string number into its integer form 8123 and then sent this number to a function that converts it to binary.如果字符串是“8123”,我首先将字符串数字转换为其整数形式 8123,然后将该数字发送到一个函数,该函数将其转换为二进制。 I got numbers as big as unsigned long long to work but once its passed that, the outputs are wrong.
我得到了与 unsigned long long 一样大的数字,但一旦通过,输出就错误了。 Is there a way to convert to binary by looking at each digit.
有没有办法通过查看每个数字来转换为二进制。 ie looking a the 3, 2, 1, and 8 to convert to binary.
即寻找 3、2、1 和 8 以转换为二进制。
So rather than taking the string "999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999" and turning it into a number, is there a way to look at each character in this string and turn it into binary?因此,而不是采取字符串“999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999”,并把它变成一个数字,有没有办法来看看这串的每个字符,并把它转换成二进制?
Any suggestions is much appreciated非常感谢任何建议
Pseudocode:伪代码:
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
eg 81:例如 81:
binary_string = str(81 % 2) + binary_string = str(1) + "" = "1" binary_string = str(81 % 2) + binary_string = str(1) + "" = "1"
number = 81 / 2 = 40数字 = 81 / 2 = 40
binary_string = str(40 % 2) + binary_string = str(0) + "1" = "01" binary_string = str(40 % 2) + binary_string = str(0) + "1" = "01"
number = 40 / 2 = 20数量 = 40 / 2 = 20
binary_string = str(20 % 2) + binary_string = str(0) + "01" = "001" binary_string = str(20 % 2) + binary_string = str(0) + "01" = "001"
number = 20 / 2 = 10数量 = 20 / 2 = 10
binary_string = str(10 % 2) + binary_string = str(0) + "001" = "0001" binary_string = str(10 % 2) + binary_string = str(0) + "001" = "0001"
number = 10 / 2 = 5数字 = 10 / 2 = 5
binary_string = str(5 % 2) + binary_string = str(1) + "0001" = "10001" binary_string = str(5 % 2) + binary_string = str(1) + "0001" = "10001"
number = 5 / 2 = 2数字 = 5 / 2 = 2
binary_string = str(2 % 2) + binary_string = str(0) + "10001" = "010001" binary_string = str(2 % 2) + binary_string = str(0) + "10001" = "010001"
number = 2 / 2 = 1数字 = 2 / 2 = 1
binary_string = str(1 % 2) + binary_string = str(1) + "010001" = "1010001" binary_string = str(1 % 2) + binary_string = str(1) + "010001" = "1010001"
81 -> "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.