对于一个非计算机专业出身的人,以前只知道计算机中所有的数据都是以二进制形式进行存储,计算,通信的。但是人类文明中,主要的信息展现以文本的形式展现的。如果使用内存中的0和1来表示文本一直都是一个问题,因为每一个人都可以制定自己的编码。这种现象直到ASCII的出现。ASCII统一了数字,字母,符号的二进制编码。

        美国标准ASCII有128个,0-32和127是控制字符或通信字符,如控制符:LF(换行), CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等。通讯专用字符:SOH(头文)、EOT(文尾)、ACK(确认)等。他们没有特定的图形显示,单会依不同的程序,对文本显示有不同的影响。
        33-126是字符,48-57为0-9数字
        65-90为26个大写字母,97-122号为26个小写字母。其余的为一些符号,运算符号。
同时还要注意,标准ASCII的最高位Bit7是一个奇偶校验位。扩展的ASCII有258个,最高位用来确定附加的128个特殊字符,外来字母和图形符号。

    举个例子:看看ASCII  --- ‘A’是如何用二进制表示的 0100 0001  十六进制为:0x41,十进制是65。作为一个程序员大家在VS中经常放在一个字符上的时候,会出现两个值,一个值是ASCII的十进制,一个是ASCII对应的字符。

    现在大家想一个问题,如果在数据传输的过程中,A-->B计算机需要发送"abc"这样的字符串,本质上时发送的abc三个字符对应的ASCII码。如果我们通过串口发送,必须要把’abc‘转化为二进制或者16进制。特别注意:因为一个每个ASCII会对应一个字符(有显示符号的,无显示符号的)。 例如我们想要发送字符串“2D”,许多程序员由于对ASCII理解不到位,因此直接把"2D"当成ASCII的16进制发送了,而实质上发送过去的是:0x3244。因此产生了数据的传输过去后,由于错误的理解,当然会解析错误。

现在明确一点,在电脑屏幕上显示的都是以ASCII对应的字符显示的,而数据的存储,传输,计算在计算机内部都是二进制的形式表示的。

        

Ascii码 、16进制与 char的更多相关文章

  1. ASCII和16进制

    所谓的ASCII和16进制都只是概念上的东西,在计算机中通通是二进制 转换应该是输出的转换,同样是一个数,在计算机内存中表示是一样的,只是输出不一样ASCII是针对字符的编码,几乎是键盘上的字符的编码 ...

  2. ASCII和16进制对照表

    十六进制代码 MCS 字符或缩写 DEC 多国字符名 ASCII 控制字符 1 00 NUL 空字符 01 SOH 标题起始 (Ctrl/A) 02 STX 文本起始 (Ctrl/B) 03 ETX ...

  3. 将16进制unsigned char数组转换成整数

    /** * 将unsigned char数组转换成long long数值 * {0x00 0x00 0x20 0x00}转换之后得到8192 * * @param str 数组 * @param le ...

  4. JS实现——Base64编码解码,带16进制显示

    在网上找了个JS实现的Base64编码转换,所以就想自己研究下,界面如下: 将代码以BASE64方式加密.解密 请输入要进行编码或解码的字符: 编码结果以ASCII码16进制显示 解码结果以ASCII ...

  5. ASCII码与16进制的互相转换(表)

    所谓的ASCII和16进制都只是概念上的东西,在计算机中通通是二进制 转换应该是输出的转换,同样是一个数,在计算机内存中表示是一样的,只是输出不一样ASCII是针对字符的编码,几乎是键盘上的字符的编码 ...

  6. 16进制串与ASCII字符串相互转换

    提供两个函数,方便十六进制串与ASCII 字符串之间的相互转换,使用函数需要注意的是返回的串是在堆上通过 calloc 分配的,所以,记得使用完返回值释放该块,并且将指向该块的指针 =NULL .// ...

  7. [ACM_模拟] ZOJ 3713 [In 7-bit 特殊输出规则 7bits 16进制]

    Very often, especially in programming contests, we treat a sequence of non-whitespace characters as ...

  8. java 16进制与字符串直接相互转换

      java 16进制与字符串直接相互转换 CreationTime--2018年7月12日09点39分 Author:Marydon 1.16进制转换成字符串 /** * 16进制直接转换成为字符串 ...

  9. 字符串/16进制/ASCII码的转换

    1 /// <字符串转16进制格式,不够自动前面补零> 2 /// 假设文本框里面填写的是:01 02 03 04 05 06 3 /// Str获取的是01 02 03 04 05 06 ...

随机推荐

  1. NX二次开发-UFUN将工程图中的点坐标映射到建模绝对坐标UF_VIEW_map_drawing_to_model

    #include <uf.h> #include <uf_ui.h> #include <uf_draw.h> #include <uf_view.h> ...

  2. NX二次开发-NX11创建表达式组NXOpen::ExpressionGroup

    NX11+VS2013 #include <uf.h> #include <uf_modl.h> #include <uf_part.h> #include < ...

  3. 6 Accessing and Managing Symbols with armlink

    6.4 Image$$ execution region symbols The linker generates Image$$ symbols for every execution region ...

  4. 4.1_springboot2.2任务之异步、定时、邮件任务

    1.异步任务 ​ 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在Spri ...

  5. 《转》python 10 集合

    自 http://www.cnblogs.com/BeginMan/p/3160565.html 一.目录 1.集合概述 2.关于集合的操作符.关系符号 3.集合的一系列操作(添加.更新.访问.删除) ...

  6. 20-MySQL-Ubuntu-数据表的查询-子查询(九)

    子查询(嵌套查询) select * from students where height=(select max(height) from students);

  7. SVN 分支操作

    一  拉取分支 1 选择浏览 2 输入svn项目路径:https://IP/svn/ 3 选择拉取的项目 4 下载到本地路劲 右键选中的分支—CheckOut 选择本地路劲 二 分支合并 1 分支合并 ...

  8. VGDB提示

    由于之前地址的版本在未安装.Net 4.0的电脑上安装会出现插件使用装载失败的问题,已更新,新地址为:http://pan.baidu.com/s/1xdnuD,此版本需要.Net 2.0.

  9. 使用navicat 使用IP、用户名、密码直接连接linux服务器里面的数据库

    一般新申请的服务器,没有开通3306端口的吧,反正我遇到的,要用Navicat去连接linux下的数据库,都必须填写两个地方的信息,才能链接成功. 如果想要只通过填写ip还有数据库用户名还有密码就可以 ...

  10. Python自学:第四章 在for循环中执行更多操作(1)

    # -*- coding: GBK -*- magicians = ['alice', 'david', 'carolina'] for magician in magicians: print(ma ...