首页 > 其他分享 >数据转换-16进制字符

数据转换-16进制字符

时间:2024-06-06 15:12:09浏览次数:21  
标签:字符 进制 16 int unsigned assert result && Char2Hex

任务要求

  1. 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务,使用git管理代码,git commit不少于5次

  2. 在附件中的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);
  1. 并写出测试代码测试上述函数(不能与下面代码一样),比如:(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
  1. 提交代码(或代码链接)和运行结果,git log截图
  2. 提交使用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; // 转换失败,输入的字符不是有效的十六进制字符  
    }  
}  

utils.h
点击查看代码
#ifndef UTILS_H  
#define UTILS_H  
  
int Hex2Char(unsigned int fromi, unsigned char *toc);  
int Char2Hex(unsigned char fromc, unsigned int *toi);  
  
#endif
2、测试代码
点击查看代码
#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; // 主函数正常结束  
}
3、结果 ![image](/i/l/?n=24&i=blog/2551094/202406/2551094-20240606150258111-9176060.png)

标签:字符,进制,16,int,unsigned,assert,result,&&,Char2Hex
From: https://www.cnblogs.com/GJH6/p/18235177

相关文章

  • 普通人也能弄的 16 个AI搞钱副业,门槛低,易上手!
    大家好,我是灵魂画师向阳本期给大家分享的是利用AI做副业的一些方法,大家可以挑选适合自己的赛道去搞钱现在是人工智能时代,利用好AI工具,可以降低普通人做副业的门槛,同时也能提高工作效率,因此AI赚钱的副业还是挺多的,今天拿20个普通人也能尝试的AI搞钱副业分享给大家,包括......
  • CSP历年复赛题-P2058 [NOIP2016 普及组] 海港
    原题链接:https://www.luogu.com.cn/problem/P2058题意解读:计算24小时时间窗口内不同国家的数量,是队列的典型应用。解题思路:本题需要用到两个关键的数据结构:队列、数组队列用来保存24小时内到达的船的时间,数组用来保存24小时内每个国家有多少人每到一只船,需要把时间放入队列,如......
  • String、StringBuilder和StringBuffer是处理字符串的三个不同的类
    在Java中,String、StringBuilder和StringBuffer是处理字符串的三个不同的类,它们各自具有不同的特点和使用场景。下面将具体分析这三个类的异同点:不可变性与可变性String:String是一个不可变的字符串,这意味着一旦一个String对象被创建,其值就不能改变。这种设计提供了值的恒定性,使......
  • CSP历年复赛题-P2010 [NOIP2016 普及组] 回文日期
    原题链接:https://www.luogu.com.cn/problem/P2010题意解读:计算两个日期之间有多少个日期是回文。解题思路:如果通过枚举两个日期之间的所有日期,然后判断回文,则会有几个问题:枚举数据规模在10^7级别,再加上对于日期加一天、判断回文等处理,有可能超时,而且对日期进行加一天、判断回......
  • C语言—字符函数和字符串函数
    1.字符分类函数C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的。这些函数的使用都需要包含一个头文件ctype.h。例:将一句话中的小写字母改成大写字母。2.字符转换函数头文件:ctype.hC语言提供了2个字符转换函数:int tolower(intc);//将......
  • PLA2216 Logic Analyser Probes for Rigol DHO900 and MSO5000 Oscilloscopes
    TheoriginalPLA2216fromRigolisexpensive.Peoplemadetheirownandopensourcedthedesign. TheearlyteardownandDIYishere: September28,2019,07:23:29amfrom https://www.eevblog.com/forum/testgear/rpl1116-active-logic-probe-pod-for-1000z-seri......
  • C语言 | 字符串函数(第二篇)【全网最详细,通俗易懂,必收藏】
    字符串函数(第二篇)一、strncpy1、strncpy的使用2、strncpy的模拟实现二、strncat1、strncat的使用2、strncat的模拟实现三、strncmp1、strncmp的使用2、strncmp的模拟实现四、strstr1、strstr的使用2、strstr的模拟实现一、strncpy1、strncpy的使用char*strnc......
  • P2716 和谐的雪花
    这道题P2716和谐的雪花本质和P2216[HAOI2007]理想的正方形是一模一样的,评蓝有点高了。本题解解法为单调对列。当然,看题目,是可以使用ST表或者线段树之类的做。中心思想就是用单调队列维护固定区间内最大最小值,加上二分答案。根据题意,很容易想象到二分\(n\)的取值,剩下......
  • Linux 安装clickhouse(离线安装/二进制包安装)
    1、下载安装包地址:https://hub-stage.docker.com/ 2、上传文件到服务器cd/home/test直接解压执行脚本安装,解压后的文件所属者为clickhouse,建议添加一个clickhouse用户,直接用root启动最好指定运行用户tar-zxvf clickhouse-common-static-24.5.1.1763-amd64.tgzsudoclic......
  • go io/ioutil 包 1.16后被弃用
     来自:从Golang项目中删除已弃用的ioutil包 Go1.16之前在Go1.16以前的版本中,如果我们需要开发文件系统、IO等操作,通常会使用到一个名为io/ioutil的包。目前很多网络上现存的教程文章,我们能够看到这个包的大量应用场景。Go1.16及之后版本自从到了Go1.16发布以后,i......