编写C函数来解析十六进制字符串并将其转换为十进制?
我正在学习C语言,在我的课堂上,这是我们第一个课程的一部分 我试图实现的功能的完整描述: 如果那是tl;dr,一个关键点是,我不允许使用其他库中的函数(因此不允许使用类似于编写C函数来解析十六进制字符串并将其转换为十进制?,c,C,我正在学习C语言,在我的课堂上,这是我们第一个课程的一部分 我试图实现的功能的完整描述: 如果那是tl;dr,一个关键点是,我不允许使用其他库中的函数(因此不允许使用类似于srtol的函数) int-parseHexString(char*hexString,int*integerRead)第一个 参数是以null结尾的C字符串,表示十六进制 整数。此函数解析此字符串,并累加整数 它所代表的价值。此整数值放置在以下位置: 由第二个参数integerRead指向。如果是错误的十六进制 此函数遇到字
srtol
的函数)
int-parseHexString(char*hexString,int*integerRead)代码>第一个
参数是以null结尾的C字符串,表示十六进制
整数。此函数解析此字符串,并累加整数
它所代表的价值。此整数值放置在以下位置:
由第二个参数integerRead指向。如果是错误的十六进制
此函数遇到字符,因此十六进制值无效
停止查看字符串中的其他字符并返回-1。
如果解析了一个好的十六进制值,它将返回0
实现此功能的正确方法首先要看
首先是字符串中的字符,不使用堆栈
完成解析。您的第一个汇编语言程序将需要
要实现此函数的功能,请保存
通过以正确的方式实现此功能,您可以节省时间
对于此函数,不要从任何库调用任何函数;作为
例外,仅出于调试目的,您可以使用printf()
。会的
如果您在提交前删除调试代码,请帮助我们评分
你的任务
我不只是在寻找这个功能的完整实现,只是一些提示或提示,让我开始
我觉得似乎有一些直观的方法可以做到这一点,但现在我是空白。我关心的是如何从字符串的第一个字符开始,然后从那里继续将其转换为十进制 那么:
- 获取字符串的长度
- 从左向右移动绳子
- 对于每个字符:
- 检查它是否是有效的十六进制字符
- 将其十进制值乘以16^x,其中x是右侧左侧的字符数
哇,他们甚至在你发送作业之前提到了你可以使用哪些函数。一个字节需要多少个十六进制字符?