我正在尝试将 pep8 中的数字分解为千位,然后是代表百位的部分,然后是代表十位的部分,最后是代表个位的部分。
示例:数字 439 应该以这种方式分解为 0,4,3,9。
你有什么建议吗 ?
我正在尝试将 pep8 中的数字分解为千位,然后是代表百位的部分,然后是代表十位的部分,最后是代表个位的部分。
示例:数字 439 应该以这种方式分解为 0,4,3,9。
你有什么建议吗 ?
数字 439 是如何存储的?它是一个字符串,还是以二进制形式存储在某处的数值?
你有什么限制?如果你知道这个数字总是 < 10,000 并且总是非负数,你可以做出一些简化的选择。
此外,您需要考虑是否需要数字 0、4、3、9 或字符串形式的“0439”。
以下帖子有很多很好的答案,特别是对于没有硬件划分或 mod 的小型处理器: https ://electronics.stackexchange.com/questions/12618/fastest-way-to-get-integer-mod-10- and-integer-divide-10
有几种方法:
涉及除法或除以 10 的某些幂来提取单个数字的东西
将二进制数转换为 BCD;BCD 数字的每个十进制数字都是独立的。此类别或多或少将整数从二进制转换为 BCD,从中您可以相对简单地提取单个数字
https://electronics.stackexchange.com/a/112455
您还可以搜索称为itoa
— 表示整数到 ascii 的算法。如果您有一个单独的十进制数字被隔离(如上面的一些),它可以转换为 ascii 字符,例如用于打印,通过添加 48,这是 '0' 的 ascii 代码 - 数字零的可打印字符。这适用于 b/c 十进制数字的字符代码是连续的,因此 9 + 48 = 57,即“9”。