c - 将字符串转换为给定基数的无符号长整数:通用算法
问题描述
作为编译专有驱动程序代码的一部分,我被迫删除包含<stdlib.h>
以解决内核包含文件引起的类型冲突。让代码编译链接成功的最后一公里似乎是用手工编码的方法替换了C标准库函数,这样就可以完全去除strtoul()
对的依赖。<stdlib.h>
但要注意的是,手写代码应该处理 0 到 16(含)之间的所有基数以进行转换。
谁能建议一个通用算法来满足这个要求?
TIA
维诺德
解决方案
将字符串和基数作为参数。从总和 0 开始。然后对于从左到右的字符串中的每个字符:
- 如果是数字,则转换为 0 到 9 之间的值
- 如果是字母(AF 或 af),则转换为 10 到 16 之间的值
- 将当前总和乘以基数,然后将该值添加到总和中。
推荐阅读
- eclipse-cdt - CreateProcess error=206, Eclipse CDT with GCC compile ThreadX+GUIX
- codeigniter - (Codeigniter) 回显结果视图自动插入数据库
- reactjs - 基于条件的 API 调用
- azure - 出站 IP 地址 Azure API 管理
- python - 无法使用 numpy 的打印功能和均值功能
- wordpress - 尝试使用文件 zila 将文件上传到我的 wordpress 服务器时,我是否修复了权限被拒绝的问题
- xml - 如何保存xml文档文件?
- ios - UIViewController.navigationController 只能在主线程中使用
- go - 模拟运行时对象模拟 K8S
- python - 为什么字典查找会导致“不可散列类型”错误,但使用直接值不会?