啊哈磊_编程从这里起步

标题: ASCII编码表 [打印本页]

作者: 李掌柜    时间: 2014-3-3 23:16
标题: ASCII编码表
本帖最后由 李掌柜 于 2014-3-3 23:27 编辑

用C语言打印一张ASCII编码表,要求有:字符,十进制,八进制.
附加:打印有二进制加分,



作者: winkill    时间: 2014-3-3 23:16
winkill 发表于 2014-4-19 22:17
#include//ASCII代码三进制打印输出By WinKill
#include

嘎嘎,我要积分
作者: rosynirvana    时间: 2014-3-4 03:00
ASCII表里有些字符打印效果不是统一的
作者: 4399APPLE    时间: 2014-3-4 09:01
rosynirvana 发表于 2014-3-4 03:00
ASCII表里有些字符打印效果不是统一的

我想知道为什么打印128后面的字符都是“?”
作者: 超神级    时间: 2014-3-4 12:45
4399APPLE 发表于 2014-3-4 09:01
我想知道为什么打印128后面的字符都是“?”

2的八次方不减一。。
作者: rosynirvana    时间: 2014-3-4 13:00
4399APPLE 发表于 2014-3-4 09:01
我想知道为什么打印128后面的字符都是“?”

那些是不可打印的字符
作者: winkill    时间: 2014-4-19 22:17
#include<stdio.h>//ASCII代码三进制打印输出By WinKill
#include<windows.h>


void to_binary(unsigned long n);
int s[9],bin_n=0;
int main(void)

{
        system("color 30");
        unsigned long pn;
        printf("序号   图案    八进制    十六进制       二进制");
        for(pn=1;pn<=255;pn++)
        {
               
                if(pn%1==0)
                printf("\n");
                printf("[%d]\t%c\t %#o\t   %#x  ",pn,pn,pn,pn);
                to_binary(pn);
        }
        printf("\n");

        getch();
}


void to_binary(unsigned long n)
{
        int r,pn;
     bin_n=0;
       
        while(n>=2)
         {
         r=n % 2;
         n/=2;
        s[bin_n]=r;
        bin_n++;
        }
        r=n % 2;
        s[bin_n]=r;
printf("");
for(pn=9;pn>=0;pn--)
{
        printf("%d",s[pn]);
}


}

作者: winkill    时间: 2014-4-19 22:30
为了好看,所有的二进制都设置为十位字符显示。还是无法显示127之后的字符。。。。前面的高手说了,那是不可打印的。。。。我暂时也没有找到办法,另附一张全图
作者: 李掌柜    时间: 2014-4-19 23:57
winkill 发表于 2014-4-19 22:30
为了好看,所有的二进制都设置为十位字符显示。还是无法显示127之后的字符。。。。前面的高手说了,那是不 ...

介个是因为代码页的关系,win系统中文版默认的代码页是936  
作者: 李掌柜    时间: 2014-4-20 00:20
4399APPLE 发表于 2014-3-4 09:01
我想知道为什么打印128后面的字符都是“?”

介个是代码页问题,我有一个很简单的解决方法,就是更改代码页就可以了~~
一行代码搞定:
  1. system("chcp 437");
复制代码

作者: rosynirvana    时间: 2014-4-20 01:19
本帖最后由 rosynirvana 于 2014-4-20 01:26 编辑

你们在说什么啊,ascii字符总共就128个,后面的本来就不在ascii表里
默认情况下128以后打印出?是因为GBK(在windows里也称code page 936)里那些数字没有映射过去的字符
改成437能显示是因为437字符集(MS-DOS用的ascii扩展字符集)有那个对应的字符

这些都和ascii没关系,ascii定义的只有0-127

作者: 李掌柜    时间: 2014-4-20 03:34
rosynirvana 发表于 2014-4-20 01:19
你们在说什么啊,ascii字符总共就128个,后面的本来就不在ascii表里
默认情况下128以后打印出?是因为GBK( ...

介个,当然是有关系的啦~~!你所说滴0~127是ASCII是7位码的一个版本,也就是标准版,
ASCII还有一个加强版的版本,就是8位码,128~255 ,介个就是扩展版,,
作者: winkill    时间: 2014-4-20 09:54
加上那行代码,效果果然不错,哈哈
作者: rosynirvana    时间: 2014-4-20 11:14
本帖最后由 rosynirvana 于 2014-4-20 11:20 编辑
李掌柜 发表于 2014-4-20 03:34
介个,当然是有关系的啦~~!你所说滴0~127是ASCII是7位码的一个版本,也就是标准版,
ASCII还有一个加强 ...

ascii extended是个俗称而已
ascii = American standard code for information interchanger, 那么美国标准化委员会批准的才能叫ascii
page 437是IBM-PC上搞出来的
如果你想让人打印扩展后的字符集,去改个标题不就可以了

作者: 李掌柜    时间: 2014-4-20 17:08
rosynirvana 发表于 2014-4-20 11:14
ascii extended是个俗称而已
ascii = American standard code for information interchanger, 那么美国 ...

C语言那多版本,又有谁是真的按所谓的标准的?
什么K&R C
ANSI C
C89标准
C99标准
C11标准
MS C等等,,,
这些那个算是标准?
还不是扩展,加强了C语言的能力?让C语言更强大,,,

作者: rosynirvana    时间: 2014-4-20 17:20
李掌柜 发表于 2014-4-20 17:08
C语言那多版本,又有谁是真的按所谓的标准的?
什么K&R C
ANSI C

如果你是认真想讨论这个问题

K&R C和MS C都不是标准
ANSI C和C89是同一个东西的两个名字,第一个是本名,第二个是俗称(和C90是是实质相同的标准)

ANSI C、 C99和C11都是C标准,都是由标准委员会按照一定程序制定的
后来大多数编译系统也确实执行了ANSI C标准
C99和C11这两个,GNU的编译器也是费心费力去执行去实现的。微软自己搞cpp搞.Net框架于是就不管了

增加C语言能力的是有人花大精力去设计去实现的C语言库,以及操作系统的API
C语言扩展增强能力?哪些扩展?又有哪些编译器支持?这个很少见吧

如果你想说的是原有的问题,主楼你写的是打印ASCII code,后面打印的是IBM-PC的字符集,这两个并非同一个东西,混为一谈对学习没什么好处,教别人怎么说,至少要说清楚那是什么
作者: rosynirvana    时间: 2014-4-20 17:23
哦对,还有一个”谁是按所谓标准“的是吧
gcc用-ansi -pedantic参数就能严格遵照ansi C标准
gcc也是现在最主流的C编译器
作者: 李掌柜    时间: 2014-4-20 17:32
rosynirvana 发表于 2014-4-20 17:20
如果你是认真想讨论这个问题

K&R C和MS C都不是标准

介个我并没有求要打印扩展,当然,有同学想把扩展的那部分,,,,
难道你不知道一个字节等于8位嘛?
都说了8位码是扩展 ASCII 码,
作者: 李掌柜    时间: 2014-4-20 17:35
rosynirvana 发表于 2014-4-20 17:23
哦对,还有一个”谁是按所谓标准“的是吧
gcc用-ansi -pedantic参数就能严格遵照ansi C标准
gcc也是现在 ...

主流的意思是用的人多,并不能说,它就是标准,,
作者: 李掌柜    时间: 2014-4-20 17:35
rosynirvana 发表于 2014-4-20 17:23
哦对,还有一个”谁是按所谓标准“的是吧
gcc用-ansi -pedantic参数就能严格遵照ansi C标准
gcc也是现在 ...

主流的意思是用的人多,并不能说,它就是标准,,
作者: rosynirvana    时间: 2014-4-20 17:46
李掌柜 发表于 2014-4-20 17:35
主流的意思是用的人多,并不能说,它就是标准,,

它用的人多,而且,它也是准照标准的
它本身只是一个编译器,当然不是标准
作者: rosynirvana    时间: 2014-4-20 17:53
李掌柜 发表于 2014-4-20 17:32
介个我并没有求要打印扩展,当然,有同学想把扩展的那部分,,,,
难道你不知道一个字节等于8位嘛?
...

没有哪位同学想打印扩展的部分
只有两个人不清楚ASCII字符有多少个,然后打印了两百多个出来,发现后面的显示不出来
后面那些在GBK是个表示区段的代码,没有对应的字符,所以显示不出来

一个字节也不一定是8bit,C编译环境里还专门有个宏来标示当前环境下一个字节多少bit
我也不知道你是怎么得出我不知道(通常)1byte = 8bit的
扩展ASCII码是8位,但是8位不一定是扩展ASCII
就好比ASCII,7位够了,但是由于计算机架构的原因一般是用8bit存储的
如果要说8位码 = 8位全用上,你写的那个IBM-PC字符集,虽然是8位全用上了,但它也不是通常所说的Extended ASCII
作者: 李掌柜    时间: 2014-4-20 17:57
rosynirvana 发表于 2014-4-20 17:53
没有哪位同学想打印扩展的部分
只有两个人不清楚ASCII字符有多少个,然后打印了两百多个出来,发现后面 ...

http://bbs.ahalei.com/forum.php? ... 785&fromuid=981这位同学

作者: 李掌柜    时间: 2014-4-20 17:57
rosynirvana 发表于 2014-4-20 17:53
没有哪位同学想打印扩展的部分
只有两个人不清楚ASCII字符有多少个,然后打印了两百多个出来,发现后面 ...

http://bbs.ahalei.com/forum.php? ... 785&fromuid=981这位同学

作者: 李掌柜    时间: 2014-4-20 18:00
rosynirvana 发表于 2014-4-20 17:53
没有哪位同学想打印扩展的部分
只有两个人不清楚ASCII字符有多少个,然后打印了两百多个出来,发现后面 ...

这就对了嘛~有人在7位的基础上加强到8位,字符多了不叫ASCII扩展,那叫啥子??
作者: rosynirvana    时间: 2014-4-20 18:05
李掌柜 发表于 2014-4-20 18:00
这就对了嘛~有人在7位的基础上加强到8位,字符多了不叫ASCII扩展,那叫啥子??

你写的那个code page 437, 名字或者俗称能在维基百科上找到,CP437、OEM 437 PC-8、或MS-DOS Latin US
一般说的extended ASCII是ISO/IEC 8859 字符集
作者: rosynirvana    时间: 2014-4-20 18:07
李掌柜 发表于 2014-4-20 17:57
http://bbs.ahalei.com/forum.php?mod=redirect&goto=findpost&ptid=4449&pid=37785&fromuid=981这位同学 ...

这里有人提到过eascii?
他要打印ascii字符表从128开始的字符
不存在的字符,超出规定范围的字符
作者: 李掌柜    时间: 2014-4-20 18:13
rosynirvana 发表于 2014-4-20 18:05
你写的那个code page 437, 名字或者俗称能在维基百科上找到,CP437、OEM 437 PC-8、或MS-DOS Latin US
...

这个也算是国家地区级的字符集吧   437美国英语 它的代码页中就有扩展ASCII字符
作者: 李掌柜    时间: 2014-4-20 18:19
rosynirvana 发表于 2014-4-20 18:07
这里有人提到过eascii?
他要打印ascii字符表从128开始的字符
不存在的字符,超出规定范围的字符

他问为什么是问号,当然,问号当然就是指扩展,或别的类型字符集了
作者: rosynirvana    时间: 2014-4-20 21:36
李掌柜 发表于 2014-4-20 18:19
他问为什么是问号,当然,问号当然就是指扩展,或别的类型字符集了

问号等于扩展?
说了多少次了问号是使用的字符集没那个映射
作者: rosynirvana    时间: 2014-4-20 21:38
李掌柜 发表于 2014-4-20 18:13
这个也算是国家地区级的字符集吧   437美国英语 它的代码页中就有扩展ASCII字符

自己用code page 437和ISO/IEC 8859比比看128开始的字符不就知道有多大差别了?




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2