关于扩展ASCII码

🎈博客主页:🌈我的主页🌈
🎈欢迎点赞 👍 收藏 🌟留言 📝 欢迎讨论!👏
🎈本文由 【泠青沼~】 原创,首发于 CSDN🚩🚩🚩
🎈由于博主是在学小白一枚,难免会有错误,有任何问题欢迎评论区留言指出,感激不尽!🌠个人主页

ASCII码

ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号而通常我们都会知道基础ASCII码,但对后面的扩展ASCII 码不太了解。
在这里插入图片描述
这就是单个字符的取值范围0 ~ 255,每一个ASCII码值都代表一个单字符。
我们常常会在编程中出现一些令人苦恼的问题,让人百思不得其解,有如下程序:

#include<stdio.h>
int main(void)
{
	int i = 5;
	float a = 242.15,b;
	double c = 123456789.456123;
	char d = 'B';
	unsigned char e;
	printf("i=%d,a=%f,c=%lf,d=%c,d=%d\n",i,a,c,d,d);
	b = i;
	i = a;
	a = c;
	d = i;
	e = d;
	printf("i=%d,a=%f,b=%f,d=%c,d=%d,e=%c,e=%d",i,a,b,d,d,e,e);
	return 0;

}

最后输出的结果却不尽如人意:

在这里插入图片描述
其中d=?,e=?确实有点问题,为什么这里会输出’ ?’,在ASCII码中似乎并没有242这个码值,这时候我们就需要去看扩展ASCII码,发现242对应的字符是“<=”,如何才能输出呢,怎么解决这个问题。

解决方法

我们C语言中char类型的变量默认的是有符号类型(范围-128 ~ 127),如果我们想要去显示出来128 ~ 255的字符,我们就需要将控制台的编码格式改变,比如改成美国的一种编码标准:437(OEM-美国),就可以正常显示128 ~ 255编码的字符,总之按照不同的标准来输出的字符结果是不一样的,所以我们需要通过两条语句来修改编码标准:

#include<windows.h>
SetConsoleOutputCP(437);

我们最后输出其结果:
在这里插入图片描述
至此,我们就可以解决这个问题。

ASCII表Bin Dec Hex 缩写字符 解释 0000 0000 0 00 NUL (null) 空字符 0000 0001 1 01 SOH (start of handing) 标题开始 0000 0010 2 02 STX (start of text) 正文开始 0000 0011 3 03 ETX (end of text) 正文结束 0000 0100 4 04 EOT (end of transmission) 传输结束 0000 0101 5 05 ENQ (enquiry) 请求 0000 0110 6 06 ACK (acknowledge) 收到通知 0000 0111 7 07 BEL (bell) 响铃 0000 1000 8 08 BS (backspace) 退格 0000 1001 9 09 HT (horizontal tab) 水平制表符 0000 1010 10 0A LF (NL line feed, new line) 换行键 0000 1011 11 0B VT (vertical tab) 垂直制表符 0000 1100 12 0C FF (NP form feed, new page) 换页键 0000 1101 13 0D CR (carriage return) 回车键 0000 1110 14 0E SO (shift out) 不用切换 0000 1111 15 0F SI (shift in) 启用切换 0001 0000 16 10 DLE (data link escape) 数据链路转义 0001 0001 17 11 DC1 (device control 1) 设备控制1 0001 0010 18 12 DC2 (device control 2) 设备控制2 0001 0011 19 13 DC3 (device control 3) 设备控制3 0001 0100 20 14 DC4 (device control 4) 设备控制4 0001 0101 21 15 NAK (negative acknowledge) 拒绝接收 0001 0110 22 16 SYN (synchronous idle) 同步空闲 0001 0111 23 17 ETB (end of trans. block) 传输块结束 0001 1000 24 18 CAN (cancel) 取消 0001 1001 25 19 EM (end of medium) 介质中断 0001 1010 26 1A SUB (substitute) 替补 0001 1011 27 1B ESC (escape) 溢出 0001 1100 28 1C FS (file separator) 文件分割符 0001 1101 29 1D GS (group separator) 分组符 0001 1110 30 1E RS (record separator) 记录分离符 0001 1111 31 1F US (unit separator) 单元分隔符
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值