C++程序转换ASCLL码

为什么这个程序没法将32以下的ASCLL码转换成二进制数输出?... 为什么这个程序没法将32以下的ASCLL码转换成二进制数输出? 展开
 我来答
hmabf
2013-10-03 · TA获得超过115个赞
知道答主
回答量:36
采纳率:0%
帮助的人:17.4万
展开全部
我测试了一下代码,代码的思路没有问题,实际转换时没有发现错误,转换也都是正常进行的

因为ascii(是ASCII 不是ASCLL)的1-31和127是控制字符或者通信专用字符,并不会显示出来,而其他的ascii码都是可以显示的。有可能你在程序中会发现这些1-31和127号也被显示出来了,这要根据不同的应用程序,也会有不同的显示吧。就是因为这些字符比较特殊,所以你可能会误认为自己的代码出现了问题吧。

代码是没有错误的,但是应该可以想到更好更简洁的代码,比如if(h == 0)i = 0;这种就可以删掉,直接让i = h / 2;前面的if(h > 0)的判断也是不要的。上面这些也都是我个人的见解,我所输入的都是1-126的正数,所以可能楼主有更多的需求所以要加吧。话说能不能用循环来处理呢?

有什么问题再提出来,我们再来探讨吧

具体可以参考百度百科,我也是看了百科才知道这么多的。
参考资料:baike.baidu.com/view/15482.htm?fromId=812
更多追问追答
追问
对!我就是因为1到31的转换老是不正确。能把它们搞正确么??
追答

咦,1-31的转换不正确是什么意思呢?

我在上面第二段中写了:ascii中的1-31号字符并不是专门用来显示用的,你的程序没错,这些字符比较特殊,我觉得是不是你的输入有错误呢?从而导致了结果错误?你是向程序输入了  1-31   号字符然后发现转换不对吗?那么你是怎么向程序输入这些特殊的字符呢?


附上一张图:我是直接将整数转换成二进制后输出,同时也输出了整数代表的字符。

类似这样的

int x = 31;

char c = (char)x;

cout << x << ":" << c << endl;

广州奥泰斯工业自动化控制设备有限公司_
2023-03-29 广告
日本OPTEX FA光电传感器产品已在中国大陆销售了近30年,产品的高性价比已被广大客户所认可。为更好的服务广大客户,日本株式会社(OPTEX FA)于2013年成立广州奥泰斯工业自动化控制设备有限公司,作为OPTEX FA中国区总部。日本... 点击进入详情页
本回答由广州奥泰斯工业自动化控制设备有限公司_提供
亚马逊选品管家
2013-10-03 · TA获得超过643个赞
知道小有建树答主
回答量:805
采纳率:100%
帮助的人:285万
展开全部
你这个方法不太好牙,可以用循环和位运算解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
南瓜猪的的的
2013-10-03 · TA获得超过1297个赞
知道小有建树答主
回答量:1598
采纳率:0%
帮助的人:406万
展开全部
#include <iostream>

typedef union uschar
{
unsigned char all;
struct
{
unsigned a:1;
unsigned b:1;
unsigned c:1;
unsigned d:1;

unsigned e:1;
unsigned f:1;
unsigned g:1;
unsigned h:1;
}s;
}uschar;

int main()
{

uschar x;

std::cin>>x.all;

std::cout<<x.s.a;
std::cout<<x.s.b;
std::cout<<x.s.c;
std::cout<<x.s.d;

std::cout<<x.s.e;
std::cout<<x.s.f;
std::cout<<x.s.g;
std::cout<<x.s.h;

return 0;
}

c++还提供了bitset类 具体百度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式