汉字与十六进制数之间的转换

制作串口调试助手的时候,想实现汉字与16进制数之间的转换,用 C 语言研究了一下,实现原理很简单。对于汉字转十六进制数,先用 char 类型数组来存放汉字,然后用 sizeof() 函数来获取该数组的长度,最后把该长度的 char 类型数据转换为十六进制的字符串,最终打印出来即可;对于十六进制数转汉字,只需要把十六进制字符串变为十进制数据类型或十六进制数据类型,然后以字符形式输出,中文或英文数据即可还原(这里将十六进制字符串转换为十进制数据类型或十六进制数据类型的过程就省略了,实现思路也比较简单,就是两个一组的转换一下就行)。下面是研究结果的分享:

toTwo(char c) 函数实现的功能是把 char 类型数据转为二进制数据,用于验证十六进制的数据是否有误。

void toTwo(char c) {int n = 0,temp;printf("%d ", c < 0);temp = 0;for(; n < 8; n ++) {temp += c & (1 << n);printf("%d", (c >> 7 - n) & 1 == 1);}printf("  %d\n", temp);
}

toHex(char c) 函数实现的功能是把 char 类型数据转为十六进制字符串

void toHex(char c) {char high = (c >> 4) & 0x0F, low = c & 0x0F;high = high < 10 ? high + '0' : high + 'A' - 10;low = low < 10 ? low + '0' : low + 'A' - 10;printf("%c%c ", high, low);
}

main() 主函数, 设置测试数据

int main() {int data = 0x00, i = 0;char c[] = "我是混子我怕谁aa";//char num[] = {206, 210, 202, 199, 187, 236, 215, 211, 206, 210, 197, 194, 203, 173, 97, 97};char num[] = {0xCE, 0xD2, 0xCA, 0xC7, 0xBB, 0xEC, 0xD7, 0xD3, 0xCE, 0xD2, 0xC5, 0xC2, 0xCB, 0xAD, 0x61, 0x61};char hex[] = "0x21";for(; i < sizeof(c) - 1; i ++) {toTwo(c[i]);}printf("=====================\n");for(i = 0; i < sizeof(c) - 1; i ++) {toHex(c[i]);}printf("\n=====================\n");for(i = 0; i < sizeof(c) - 1; i ++) {printf("%c",num[i]);}printf("\n=====================\n");printf("%s", num);printf("\n=====================\n"); return 0;
}

运行结果图


学习分享,一起成长!以上为小编的经验分享,若存在不当之处,请批评指正!

快乐学习C语言:汉字与十六进制数之间的转换相关推荐

  1. 三菱plcascll转换16进制_S7-200PLC ASCII码与十六进制数之间的转换指令及其使用

    摘要:ASCII码与十六进制数之间的转换指令指令格式和功能如表1所示.表1 ASCII码与十六进制数之间转换指令的格式和功能LADSTLATH IN,OUT,LENHTA IN,OUT,LEN操作数及 ...

  2. Unity 中的 3D 数学学习笔记——认识坐标系及坐标系之间的转换

    一 :3d空间坐标系  x,y,z 轴 z轴方向确定有两种方式 左手坐标系和右手坐标系 左手坐标系:伸开左手,大拇指指向X轴正方向,食指指向Y轴正方向,其他三个手指指向Z轴正方向. 右手坐标系:伸开右 ...

  3. C语言字符串转十六进制数例如“2a”转换成0x2a

    参与公司的web server项目时,在与网页的信息处理中,要将12个字节的字符串例如"012a3b4d5e6f",转换为十六进制数0x01,0x2a,0x3b,0x4d,0x5e ...

  4. 十进制数,二进制数,八进制数,十六进制数之间的转换

    一.R进制转换为十进制 R进制转换为十进制的方法是"按权展开". 1.二进制转换为十进制: (11010)2=1x24+1x23+0x22+1x21+0x20=(26)10 2.八 ...

  5. C语言学习之路--计算机系统组成以及工作原理,进制之间的转换和机器数及其表示范围

    目录 一.前言 二.计算机系统组成以及工作原理简介 1.硬件系统基本组成原理及工作原理 2.硬件各部分详解 1.运算器 2.控制器 CPU 3.存储器 1.内存储器 2.外存储器 3.拓展 4.存储器 ...

  6. C#基础——字符串、数字之间的转换

    (int).int.Parse.int.tryParse.Convert.ToInt32的区别? Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt3 ...

  7. Java中字节数组和十六进制字符串之间的转换

    1. 概述 在本教程中,我们将看看将字节数组转换为十六进制字符串,反之亦然的不同方法. 我们还将了解转换机制并编写我们的实现来实现这一点. 2. 字节和十六进制之间的转换 首先,我们来看看字节和十六进 ...

  8. HDL4SE:软件工程师学习Verilog语言(二)

    2 词法和预处理器 2.1 定个小目标 作为一个软件工程师,学习一种语言,最暴力的办法就是做一个这种语言的编译器(或解释器),如果没有做过某种语言的编译器,至少也得仔细看过这种语言的编译器实现,最不济 ...

  9. c语言 字母 八进制表示'/1011',C语言C语言第一课:C语言概述为什么学习C语言怎样学习C语言.DOC...

    [摘要]C语言 第一课: C语言概述 为什么学习C语言 怎样学习C语言 参考资料 ----------------------------------------------------------- ...

最新文章

  1. 手机支架3d打印模型_3D打印工艺模型制造
  2. linux目录都是什么意思,linux中的基本的目录结构都是什么意思,初学者都应该有印象-tmp是什么文件...
  3. Nginx隐藏PHP入口文件index.php
  4. python线程(二)代码部分Threading模块
  5. MySQL用户如何构建实时数仓
  6. STL(三)——next_permutation()
  7. 反射parameter field_Java反射有多强?这5大神奇功能,你需要了解!
  8. WPF如何给窗口设置透明png的图片背景
  9. JAVA中properties基本用法
  10. IPSec隧道配置案例(手动模式)
  11. PilotEdit 破解版下载|PilotEdit(文本编辑器) 中文破解版 v11.8下载(含注册机)
  12. html没有写font标签却出现font标签解决方案
  13. Scala简介以及基本语法(一)
  14. Java 入门-02-人机交互-图形化界面的小故事
  15. Java学习:从入门到精通week4
  16. 80秒验证13亿个身份证号码,包含省市县验证
  17. 华为服务器开启xmp后系统信息会变吗,XMP是什么?教你开启XMP瞬间提升内存性能...
  18. 洛谷 CF7E Defining Macros 题解
  19. 为地震死去的孩子们而作(转载)
  20. 进化算法——多目标优化

热门文章

  1. 有哪些数组操作?哪些操作不会改变原数组?
  2. 神骑世界之球球英雄合作模式玩法
  3. 微信的朋友圈为什么不设置到首屏或者下栏,为什么路径这么深
  4. CSS 中 border: 1px solid rgba(0, 0, 0, 0.1); 是什么意思?
  5. uniapph5页面使用扫码功能
  6. vim 粘贴时取消自动换行
  7. tmux 命令使用汇总
  8. 家庭创意:春节寻宝习俗
  9. 对zygote的理解
  10. c语言 string indexof,c语言indexof的用法有哪些