首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将1和0组成的字符串转换为二进制值

将1和0组成的字符串转换为二进制值
EN

Stack Overflow用户
提问于 2008-09-22 21:46:20
回答 5查看 20.7K关注 0票数 23

我正在尝试将传入的字符串1和0从标准输入转换为它们各自的二进制值(其中"11110111“这样的字符串将被转换为0xF7)。这看起来很微不足道,但我不想重复发明轮子,所以我想知道在C/C++标准库中是否有什么已经可以执行这样的操作?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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

票数 37
EN

Stack Overflow用户

发布于 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;
}
票数 14
EN

Stack Overflow用户

发布于 2008-09-22 21:49:50

您可以使用strtol

char string[] = "1101110100110100100000";
char * end;
long int value = strtol (string,&end,2);
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/117844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档