我正在尝试将传入的字符串1和0从标准输入转换为它们各自的二进制值(其中"11110111“这样的字符串将被转换为0xF7)。这看起来很微不足道,但我不想重复发明轮子,所以我想知道在C/C++标准库中是否有什么已经可以执行这样的操作?
发布于 2008-09-22 21:50:56
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char * ptr;
long parsed = strtol("11110111", & ptr, 2);
printf("%lX\n", parsed);
return EXIT_SUCCESS;
}
对于更大的数字,有一个long long
版本,strtoll
。
发布于 2008-09-22 22:28:13
可以使用std::bitset (如果在编译时知道位的长度)
不过,在某些程序中,您可以将其分成块并合并。
#include <bitset>
#include <iostream>
int main()
{
std::bitset<5> x(std::string("01011"));
std::cout << x << ":" << x.to_ulong() << std::endl;
}
发布于 2008-09-22 21:49:50
您可以使用strtol
char string[] = "1101110100110100100000";
char * end;
long int value = strtol (string,&end,2);
https://stackoverflow.com/questions/117844
复制相似问题