首页 > 解决方案 > 将字符串转换为给定基数的无符号长整数:通用算法

问题描述

作为编译专有驱动程序代码的一部分,我被迫删除包含<stdlib.h>以解决内核包含文件引起的类型冲突。让代码编译链接成功的最后一公里似乎是用手工编码的方法替换了C标准库函数,这样就可以完全去除strtoul()对的依赖。<stdlib.h>但要注意的是,手写代码应该处理 0 到 16(含)之间的所有基数以进行转换。

谁能建议一个通用算法来满足这个要求?

TIA

维诺德

标签: calgorithmcompilationdriverstrtoul

解决方案


将字符串和基数作为参数。从总和 0 开始。然后对于从左到右的字符串中的每个字符:

  • 如果是数字,则转换为 0 到 9 之间的值
  • 如果是字母(AF 或 af),则转换为 10 到 16 之间的值
  • 将当前总和乘以基数,然后将该值添加到总和中。

推荐阅读