任务要求
-
在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,使用git管理代码,git commit不少于5次
-
在附件中的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
- 提交代码(或代码链接)和运行结果,git log截图
- 提交使用Markdown并转为PDF,或者使用doc,docx格式
任务结果
1、utils.c
点击查看代码
#include "utils.h"
#include <stdio.h>
// Hex2Char: 将十六进制数转换为对应的字符
int Hex2Char(unsigned int fromi, unsigned char *toc) {
if (fromi >= 0 && fromi <= 15) {
*toc = (fromi < 10) ? ('0' + fromi) : ('A' + fromi - 10);
return 1; // 转换成功
} else {
return 0; // 转换失败,输入的十六进制数超出范围
}
}
// Char2Hex: 将十六进制字符转换为对应的数
int Char2Hex(unsigned char fromc, unsigned int *toi) {
if ((fromc >= '0' && fromc <= '9') ||
(fromc >= 'A' && fromc <= 'F') ||
(fromc >= 'a' && fromc <= 'f')) {
*toi = (fromc >= '0' && fromc <= '9') ? (fromc - '0') :
((fromc >= 'A' && fromc <= 'F') ? (fromc - 'A' + 10) :
(fromc - 'a' + 10));
return 1; // 转换成功
} else {
return 0; // 转换失败,输入的字符不是有效的十六进制字符
}
}
点击查看代码
#ifndef UTILS_H
#define UTILS_H
int Hex2Char(unsigned int fromi, unsigned char *toc);
int Char2Hex(unsigned char fromc, unsigned int *toi);
#endif
点击查看代码
#include "utils.h"
#include <stdio.h>
#include <assert.h>
int main() {
// 测试 Hex2Char 函数
{
unsigned char result;
assert(Hex2Char(0, &result) && result == '0');
assert(Hex2Char(9, &result) && result == '9');
assert(Hex2Char(10, &result) && result == 'A');
assert(Hex2Char(15, &result) && result == 'F');
// 测试超出范围的情况
assert(!Hex2Char(16, &result));
}
// 测试 Char2Hex 函数
{
unsigned int result;
assert(Char2Hex('0', &result) && result == 0);
assert(Char2Hex('9', &result) && result == 9);
assert(Char2Hex('A', &result) && result == 10);
assert(Char2Hex('F', &result) && result == 15);
// 测试小写字母
assert(Char2Hex('a', &result) && result == 10);
assert(Char2Hex('f', &result) && result == 15);
// 测试非十六进制字符
assert(!Char2Hex('G', &result));
}
// 如果所有断言都通过,则输出成功消息
printf("All tests passed successfully!\n");
// 如果你的程序还有其他功能或需要继续执行,可以在这里添加代码
return 0; // 主函数正常结束
}