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

时间:2013-02-09 09:45:05

标签: c

我只是在学习C,在我的课堂上,这是我们第一个课程的一部分。

我想要实现的功能的完整描述:

如果那是tl; dr,关键是我不允许使用其他库中的函数(因此排除srtol之类的东西)。

  

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

     

实现此功能的正确方法着眼于第一个   首先是字符串中的字符,不使用堆栈   完成解析。您的第一个汇编语言程序将需要   实现这个功能完成的任务,所以你将保存   通过正确的方式实现此功能,你自己的时间。

     

对于此功能,请勿调用任何库中的任何函数;作为一个   异常,仅出于调试目的,您可以使用printf()。它会   如果在提交之前删除调试代码,请帮助我们评分   你的任务。

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

我觉得有一种直观的方式可以做到这一点,但现在我正在消隐。我关心的是我应该从字符串的第一个字符开始,然后从那里继续将其转换为十进制。

1 个答案:

答案 0 :(得分:2)

怎么样:

  • 获取字符串的长度
  • 从左到右走绳子
  • 每个角色:
    • 检查它是否是有效的十六进制字符
    • 添加其十进制值乘以16 ^ x,其中x是右侧的字符数