数据转换-16进制字符
-
在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务
-
在附件中的utils.h和utils.c中完成16进制字符'0'-'9','A'-'F','a'-'f'与十六进制数据0-15的转换功能(10’):
int Hex2Char(unsigned int fromi,unsigned char * toc); int Char2Hex(unsigned char fromc,unsigned int * toi);
- 并写出测试代码测试上述函数(不能与下面代码一样),比如:(10’)
unsigned char c; Hex2Char(1, &c) //结果:c = '1' Hex2Char(15, &c) //结果:c = 'F' unsigned int i; Char2Hex('1', &i); //结果:i = 1 Char2Hex('F', &i); //结果:i = 15
- 提交代码(或代码链接)和运行结果
uitls.h
#ifndef _UTIL_H_ #define _UTIL_H_ //char Hex2Char(int i); //int Char2Hex(char c); int Hex2Char(int fromi,char * toc); int Char2Hex(char fromc,int * toi); int Bitstr2ByteArr(char * bs,char * ba); int ByteArr2Bitstr(char * ba,char * bs); int Int2ByteArr(int i,char * ba); int ByteArr2Int(char * ba,int * i); #endif
utils.c
#include<stdio.h> #include"utils.h" char Hstr[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; int Hex2Char(int fromi,char *toc) { if(fromi>=0&&fromi<=9) {*toc= fromi+'0';} else if(fromi>=10&&fromi<=15) {*toc = fromi+'A'-10;} else {printf("error");} return 0;} int Char2Hex(char fromc,int *toi) { if(fromc>='0'&& fromc<='9') {*toi= fromc-'0'; } else if(fromc>='A'&& fromc<='F') {*toi= fromc-'A'+10;} else {printf("error");} return 0; }
main.c
#include<stdio.h> #include"utils.h" int main(){ int n1,n2; char c1,c2; printf("请输入一个0~15的数:"); scanf("%d",&n1); Hex2Char(n1,&c1); printf("对应的16进制字符是%c\n",c1); printf("请输入一个16进制字符:"); scanf("%s",&c2); Char2Hex(c2,&n2); printf("%c对应的数是%d\n",c2,n2); }
运行截图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现