为什么我们不能直接把八进制数转换成基数8到十六进制基16呢?我们可以先把八进制转换成二进制等价,或者把它转换成十进制等价。但是为什么我们不能直接将基8八进制转换为16十六进制呢?
发布于 2018-10-02 05:45:17
您可以通过连续除以020,与小数点一样。比方说,您有0137357 (从这里省略简短的前缀):
137357 / 20 = 5756 remainder 17 = 0xf
5756 / 20 = 276 remainder 16 = 0xe
276 / 20 = 13 remainder 16 = 0xe
13 < 20, so highest digit is 0xb
0xbeef发布于 2018-10-02 05:45:56
您可以直接进行这种转换--但是要意识到,当字符的数字序列被解释为数字时,八进制、十六进制和十进制是字符串的属性。因此,八进制表示不能有效地存储一个数字;虽然十六进制更好,但它仍远不如本机数字存储机制有效。
在CPU内部,整数格式(例如32位、64位、其他的)数字只是数字。处理器将使用二进制位将它们存储为数字,但这对本文的讨论并不十分重要。重要的是固定大小与可变大小,以及数字的原生存储与它们在字符串中的表示形式。
发布于 2018-10-02 05:46:05
您可以直接从八进制转换为十六进制。作为蛮力解决方案,创建一个12位查找表,索引到具有四个八进制数字的表中,取出三个十六进制数字。其他空间密集的解决方案也存在。
https://softwareengineering.stackexchange.com/questions/379312
复制相似问题