沐枫小筑
script c c++ c++/cli c#
.net windows ria game and so ...
博客园
社区
首页
新随笔
联系
管理
订阅
随笔- 56 文章- 1 评论- 404
用bitset进行2进制输入输出
C/C++内置的输入、输出,对整数进制只支持三种:8进制、10进制、16进制。记得很久以前,有好几次想用到2进制的输入输出,最终只好自已转换。
昨天
kaikai
突然发了一个POST:
kaikai:
看看能不能把这个程序改得更短
?
#include
<
cstdio
>
int
main()
{
char
*
a,b[
33
];
scanf(
"
%*d
"
);
while
(scanf(
"
%s
"
,b)
==
1
)
{
int
d
=
0
;
for
(a
=
b;
*
a;)d
=
d
*
2
|*
a
++%
2
;
printf(
"
%d.%d.%d.%d\n
"
,d
>>
24
&
255
,d
>>
16
&
255
,d
>>
8
&
255
,d
&
255
);
}
return
0
;
}
一眼看过去,呵呵,输入输出不可省,核心还是二进制的转换问题。于是想起以前曾经做过的事情,学习多了,直觉的可以用bitset来实现。打开MSDN,查找bitset,嘿,果然有定义流输入操作符。
写了一个测试:
#include
<
iostream
>
#include
<
bitset
>
using
namespace
std;
void
main()
{
bitset
<
32
>
a;
cin
>>
a;
cout
<<
a.to_ulong()
<<
endl;
}
呵呵,搞定了,输入2进制,输出10进制,完全正常。以后输入2进制串的时候,就不需要自已转换了。
补充:
经过wang.lj 网友的提醒,才发现C库中还有一个函数,就是用来将数字串以指定的数制转换成整数的:
i = strtol(s, &end, 2); //二进制流转换为16进制字符串
posted @ 2006-06-29 10:11
沐枫
阅读(2456)
评论(6)
编辑
收藏
网摘
所属分类:
C++
发表评论
回复
引用
#1楼
2006-06-29 20:09 |
LOGOS [未注册用户]
汗。。。之前用bitset做的是别的操作,已经体验到简便。
没想到还有这么用的。。。
回复
引用
#2楼
2006-06-29 20:18 |
Jerry Cat [未注册用户]
"一眼看过去" scanf("%*d"); 将俺楞了一下, 久疏控制台界面(在GUI上浸淫日久), 查了下MSDN才搞清:) 呵呵!
回复
引用
查看
#3楼
2006-06-30 11:22 |
.Live
STL... 得多学习
[r]
回复
引用
查看
#4楼
2006-06-30 13:39 |
kaikai
确实清楚多了~
回复
引用
#5楼
2006-07-01 12:30 |
wang.lj [未注册用户]
标准库函数strtol就可以实现字符串转二进制
i = strtol(s, &end, 2); //二进制流转换为16进制字符串
回复
引用
查看
#6楼
[
楼主
]
2006-07-01 23:19 |
沐枫
@wang.lj
嗯,谢谢,又一个了。
看来我还是对标准库不熟啊。:(
刷新评论列表
切换模板
发表评论
姓名
[登录]
[注册]
主页
Email
(仅博主可见)
验证码
*
看不清,换一张
内容(请不要发表任何与政治相关的内容)
今天你闪了吗?
《C# 3.0设计模式》65折特惠
Remember Me?
登录
使用高级评论
新用户注册
返回页首
[使用Ctrl+Enter键可以直接提交]
导航:
网站首页
社区
新闻
博问
闪存
网摘
招聘
.NET频道
知识库
找找看
Google站内搜索
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务
相关文章:
相关链接:
最新IT新闻:
Google App Engine宕机6小时——云的安全在哪里?
微软新推社交网站Windows Live Planet
火狐3.5版被指推出太匆忙:存在50多个漏洞
Google对手机搜索进行优化升级
风声又起 Windows 7 RTM版7月13日完成
公告
沐枫小筑 主力博客
沐枫小筑 C++博客
与我联系
发短消息
搜索
留言簿
给我留言
查看留言
我参与的团队
福州.NET俱乐部(0/0)
我的标签
DynamicControl(8)
ASP.NET(1)
C#(1)
ASP.NET 3.5 SP1(1)
随笔分类
(55)
.NET(13)
(rss)
C++(21)
(rss)
Flex(3)
(rss)
Other#(5)
(rss)
Tip#(7)
(rss)
乱弹(6)
(rss)
随笔档案
(54)
2009年1月 (1)
2008年8月 (2)
2008年4月 (1)
2007年12月 (1)
2007年11月 (1)
2007年10月 (2)
2007年9月 (4)
2007年8月 (2)
2007年7月 (1)
2007年5月 (2)
2006年9月 (3)
2006年8月 (5)
2006年7月 (1)
2006年6月 (6)
2006年5月 (1)
2006年4月 (3)
2006年3月 (4)
2006年1月 (1)
2005年12月 (1)
2005年11月 (7)
2005年9月 (5)
收藏夹
(32)
.NET(32)
(rss)
推荐链接
c++
Dflying Chen
(rss)
Dreamer's Blog
(rss)
Macromedia 技术
沐枫小筑
中国地方游戏网
我的Blog
C++ 沐枫小筑
(rss)
沐枫@blogchina.com
(rss)
沐枫@blogcn.com
(rss)
沐枫@csdn.net
(rss)
沐枫@teeta.com
(rss)
积分与排名
积分 - 194180
排名 - 243
最新评论
1. re: 您也使用托管C++吗?
不是为什么维护以前的C++代码,而是C#有些实现不了的功能用C++写,但C#又想实现,却来个变态的互操作 (ZKO)
2. re: C++指针探讨 (四) 函数对象
思路很清晰,例子很明了。不错!不错! (帘卷西风1985)
3. re: X-GL 超越Vista的界面效果
推荐一个不错的编程资料下载的地址
以下的链接中有海量的资料供有需要的朋友下载,希望能对你有帮助。
(yashaov)
4. re: DynamicControl/DynamicField 例外的解决
推荐一个不错的编程资料下载的地址
以下的链接中有海量的资料供有需要的朋友下载,希望能对你有帮助。
(yashaov)
5. re: .net winform 的 OnKeyDown 与 方向键
推荐一个不错的编程资料下载的地址
以下的链接中有海量的资料供有需要的朋友下载,希望能对你有帮助。
(yashaov)
阅读排行榜
1. Lua脚本语法说明(修订)(18059)
2. C++ 程序文档生成器介绍(doxygen)(15882)
3. C++指针探讨 (三) 成员函数指针 (10376)
4. C++指针探讨 (二) 函数指针(9956)
5. C++指针探讨 (一)数据指针(9332)
6. 如何使用.NET配置文件(一)(7856)
7. 您也使用托管C++吗?(7065)
8. 介绍LuaPlus: 好用的Lua For C++扩展(修订)(6807)
9. int 与 byte[] 的相互转换(5869)
10. Flex与.NET WebService(5846)