二进制转十进制算法

csxailw 2011-08-09 02:06:13
MODBUS RTU 浮点算法 算法如下:
http://zhidao.baidu.com/question/208808310.html

目前在将二进制转换成十进制时遇到困难。就是把2进制的111010110011000000000转换成十进制的111010110011000000000
本来想把2进制的数先转成cstring 在转成十进制。但是cstring的format没有二进制的%格式。
请问有什么好的思路吗?有直接现成的MODBUS RTU 浮点算法也可以。感觉比较复杂,最后还要将转完的数据在转一次。。
...全文
324 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gz_qmc 2011-08-09
  • 打赏
  • 举报
回复
int 类型的数最多只能表示10位

也就是说最多只能转10位

char buf[11]={0};

int s=表示的数&0x000003FF; //原数取10位
for(int i=0;i<10;i++)
buf[i]=(s>>(9-i))&1+0x30;

int r=atoi(buf); //结果1
int r;
sscanf(buf,"%d",&r); //结果2
csxailw 2011-08-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ndy_w 的回复:]
二进制的100(4)转成十进制的100
4转成100?!!
[/Quote]

kyotrue 2011-08-09
  • 打赏
  • 举报
回复
字符串转数字?_tcstol,第三个参数指定进制就行了
ndy_w 2011-08-09
  • 打赏
  • 举报
回复
二进制的100(4)转成十进制的100
4转成100?!!
zwfgdlc 2011-08-09
  • 打赏
  • 举报
回复
bitset类。

#include "stdafx.h"
#include <iostream>
#include <bitset>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int a = 4;
bitset<32> b(a);

int i = atoi(b.to_string().c_str());
cout<<i<<endl;

return 0;
}
csxailw 2011-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ndy_w 的回复:]
数就是数,只有在显示时才十进制二进制。
你要做printf?
[/Quote]

我知道呀 请看清楚。。我是要把二进制的100(4)转成十进制的100
ndy_w 2011-08-09
  • 打赏
  • 举报
回复
数就是数,只有在显示时才十进制二进制。
你要做printf?

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧