每每遇到这些问题就要想个半天,想不明白还不舒服,今天特别把所想整理下避免以后再次进入思想漩涡!!!

计算机存储和传输都是以字节为单位

1 bit     = 1  二进制数据

1 byte  = 8  bit

1 字母 = 1  byte = 8 bit

1 汉字 = 2  byte = 16 bit

1. bit:位

一个二进制数据0或1,是1bit;

2. byte:字节

存储空间的基本计量单位,如:MySQL中定义 VARCHAR(45)  即是指 45个字节;

1 byte = 8 bit

3. 一个英文字符占一个字节;

1 字母 = 1 byte = 8 bit

4. 一个汉字占2个字节;

1 汉字 = 2 byte = 16 bit

5. 标点符号

A>.  汉字输入状态下,默认为全角输入方式;

B>.  英文输入状态下,默认为半角输入方式;

C>.  全角输入方式下,标点符号占2字节;

D>.  半角输入方式下,标点符号占1字节;

故:汉字输入状态下的字符,占2个字节 (但不排除,自己更改了默认设置);

英文输入状态下的字符,占1个字节 (但不排除,自己更改了默认设置);

ASCII码

因为信息在计算机上是用二进制表示的,这种表示法让人理解就很困难。因此计算机上都配有输入和输出设备,这些设备的主要目的就是以一种人类可阅读的形式 将信息在这些设备上显示出来供人阅读理解。为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是ASCII码表,它的全称是“美国信息交换标准代码”。

BCD码

BCD码(Binary-Coded Decimal?)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。

asc2hex

就是字符串转化成16进制数字 如:“4321”  0x34 0x33 0x32 0x31 --> 0x43 0x21

hex2asc

就是16进制数字转化成字符串 如: 0x43 0x21 --> “4321”  0x34 0x33 0x32 0x31

以下给出两种实现方法:

unsigned char ascii_table[16] ={'0', '1', '2', '3', '4', '5', '6', '7',

'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

void hex2asc(unsigned char dat, unsigned char **new)

{**new = ascii_table[dat >> 4];*new += 1;**new = ascii_table[dat & 0x0f];*new += 1;

}

int asc2hex(unsigned char dat, unsigned char *new)

{if ((dat >= '0') && (dat <= '9'))*new = dat - '0';else if ((dat >= 'A') && (dat <= 'F'))*new = dat - 'A' + 10;else if ((dat >= 'a') && (dat <= 'f'))*new = dat - 'a' + 10;else

return -1;return 0;

}

void hex2str(unsigned char*read, unsigned char **write,int len)

{while (len--)

hex2asc(*read++,write);

}

int str2hex(unsigned char*read, unsigned char *write,int len)

{

unsigned char dat;while (len--) {if (asc2hex(*read++, &dat))return -1;*write = *write << 4 |dat;if (!(len & 1)) {++write;

}

}return 0;

}

c语言 bcd码 16进制字符串 原理,ASCII码、HEX、字符、BCD 等等 基础知识思考相关推荐

  1. python3 16进制字符串转ASCii码值

    这是我自己写的源代码,应该不是最简单的方法,只是尝试一下,本人也是刚学python3. h = '54686520676f6e6520697320676f6e652e' t1 = [h[i:(i+2) ...

  2. c语言16进制转换为ascii码,C--16进制文本转换为ascii码

    我用的将16进制文本转换为ascii码的C语言代码.16进制文本复制到文件test.txt中,运行程序,将得到输入. 例: 运行:./CSTRING test.txt 其中,test.txt文件内容为 ...

  3. 10进制和16进制 数字和ASCII码互转

    10进制和16进制数转ASCII码 int hex2ascii(unsigned char *hex, int hex_len, char *text) {char buffer[20];int cn ...

  4. python实现16进制数转ASCII码并写入文本

    python实现16进制数转ASCII码并写入文本 原理 代码 原理 目标:生成一段随机数据并分别转换成二进制数据和ASCII码写入文本. 关键:使用random.randint()方法生成一定范围的 ...

  5. ASCII码转16进制 十六进制转ASCII码

    ASCII码转16进制 十六进制转ASCII码 //ASCII码转16进制 function strToHexCharCode(str) { if (str === "") { r ...

  6. C语言之10/16进制字符串和数字转换(四)

    #include <stdio.h> #include <stdlib.h>int main() {//1.将10进制和16进制字符串转换成数字char a[] = " ...

  7. VC++字符串转16进制字符串(附源码)

      VC++开发常用功能一系列文章 (欢迎订阅,持续更新...) 给定一个字符串,有时我们需要把它转成16进制字符串进行操作 比如: wifi的profile 中的SSID ,在操作时需要转成16进制 ...

  8. gb2312的字符串(包括中午)转16进制字符串以及反转义原始字符

    参考文章: https://blog.csdn.net/weixin_42696271/article/details/114100244 /*** 中文字符串转16进制* gb2312编码字符串转义 ...

  9. 用JavaScript写代码将硬盘序列号从16进制字符串转换为ASCII字符串,兼谈EditPlus和Edge浏览器对JavaScript脚本支持的一点差别

    之前写的系统信息收集报告程序SysInfo的一个功能就是收集并报告系统中的硬盘序列号.在之前的测试中这项功能表现不错,但前两天用SysInfo收集一台电脑的信息时,显示的硬盘序列号与其它硬盘序列号读取 ...

最新文章

  1. 【ES6】JS的Set和Map数据结构
  2. jquery验证框架分装(以后有时间研究拓展)
  3. 6、CSS Id 和 Class类选择器
  4. c#语法之lock 语句
  5. Python 模块之heapq
  6. 语音视频社交背后技术深度解析
  7. 微信公众平台开发——问题篇
  8. postgresql定义访问ip与用户_PostgreSQL 设置允许访问IP的操作
  9. qstandarditem判断是否单击在checkbox内_Tiktok运营,如何判断有人查看了您的TikTok个人资料...
  10. 判断变量x是奇数还是偶数
  11. 西瓜综艺走进厦门大同小学 唤醒家庭亲子交流
  12. 色彩模式-RGB、HSV、CMYK、灰度模式、位图模式......
  13. Label 标签使用
  14. ati hd 6470m驱动
  15. Synopsys AXI VIP delay相关信号配置
  16. c++学习笔记-提高编程-模板(哔站-黑马程序员c++教学视频)
  17. 四十余款不良APP被工信部下架处理
  18. PMBOK第六版最新十大大知识领域ITTO思维导图-干货!
  19. vue实现自定义身份证,数字键盘(光标,输入框,键盘)
  20. APP动效设计如何做得流畅又实用?

热门文章

  1. mvn exec运行java Main报错
  2. 如何查看自己运行ubuntu是32位还是64位
  3. 火狐浏览器快捷键大全
  4. 我的ubunt开发环境 (操作备份)
  5. ReSharper 全教程
  6. 哈尔滨有线电视频道表
  7. linux命令-eq是什么意思,linux查看系统信息命令
  8. python遵循什么协议_《Python网络爬虫》2.3 Robots协议的遵守方式
  9. python控制鼠标_如何使用Python在Mac中控制鼠标?
  10. 缓存设计方案 你了解吗 SpringBoot 快速集成实现一级缓存Redis和二级缓存Caffeine 可自定义扩展