Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写C函数来解析十六进制字符串并将其转换为十进制?_C - Fatal编程技术网

编写C函数来解析十六进制字符串并将其转换为十进制?

编写C函数来解析十六进制字符串并将其转换为十进制?,c,C,我正在学习C语言,在我的课堂上,这是我们第一个课程的一部分 我试图实现的功能的完整描述: 如果那是tl;dr,一个关键点是,我不允许使用其他库中的函数(因此不允许使用类似于srtol的函数) int-parseHexString(char*hexString,int*integerRead)第一个 参数是以null结尾的C字符串,表示十六进制 整数。此函数解析此字符串,并累加整数 它所代表的价值。此整数值放置在以下位置: 由第二个参数integerRead指向。如果是错误的十六进制 此函数遇到字

我正在学习C语言,在我的课堂上,这是我们第一个课程的一部分

我试图实现的功能的完整描述:

如果那是tl;dr,一个关键点是,我不允许使用其他库中的函数(因此不允许使用类似于
srtol
的函数)

int-parseHexString(char*hexString,int*integerRead)第一个
参数是以null结尾的C字符串,表示十六进制
整数。此函数解析此字符串,并累加整数
它所代表的价值。此整数值放置在以下位置:
由第二个参数integerRead指向。如果是错误的十六进制
此函数遇到字符,因此十六进制值无效
停止查看字符串中的其他字符并返回-1。
如果解析了一个好的十六进制值,它将返回0

实现此功能的正确方法首先要看 首先是字符串中的字符,不使用堆栈 完成解析。您的第一个汇编语言程序将需要 要实现此函数的功能,请保存 通过以正确的方式实现此功能,您可以节省时间

对于此函数,不要从任何库调用任何函数;作为 例外,仅出于调试目的,您可以使用
printf()
。会的 如果您在提交前删除调试代码,请帮助我们评分 你的任务

我不只是在寻找这个功能的完整实现,只是一些提示或提示,让我开始

我觉得似乎有一些直观的方法可以做到这一点,但现在我是空白。我关心的是如何从字符串的第一个字符开始,然后从那里继续将其转换为十进制

那么:

  • 获取字符串的长度
  • 从左向右移动绳子
  • 对于每个字符:
    • 检查它是否是有效的十六进制字符
    • 将其十进制值乘以16^x,其中x是右侧左侧的字符数

哇,他们甚至在你发送作业之前提到了你可以使用哪些函数。一个字节需要多少个十六进制字符?