-2

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

我正在尝试实现的功能的完整描述:

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

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

实现此函数的正确方法是首先查看字符串中的第一个字符,并且不使用堆栈来完成解析。您的第一个汇编语言程序将需要实现这个函数完成的任务,因此您可以通过正确的方式实现这个函数来节省时间。

对于这个函数,不要调用任何库中的任何函数;作为一个例外,仅出于调试目的,您可以使用printf(). 如果您在提交作业之前删除调试代码,这将有助于我们的评分。

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

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

4

1 回答 1

2

怎么样:

  • 获取字符串的长度
  • 从左到右走线
  • 对于每个字符:
    • 检查它是否是有效的十六进制字符
    • 加上它的十进制值乘以 16^x,其中 x 是左边的字符数
于 2013-02-09T09:51:24.537 回答