这个函数只接受255以下的数字,因此它只打印两位数。为什么它只打印两位数?它看起来像while循环只运行一次或什么。根据我的想法,它应该运行一次或两次。5368的十六进制应该是14F8,这个函数很接近,但是你可以看到它只打印1和4,而不是F或8。另外,我怎样才能让它转换浮点数?
import math
def hexConvert(dec):
while(math.floor(dec/16) > 0):
x = ""
rem = dec/16 - math.floor(dec/16)
myHex = rem*16
if myHex > 9 :
if myHex == 10 :
x += "A"
if myHex == 11 :
x += "B"
if myHex == 12 :
x += "C"
if myHex == 13 :
x += "D"
if myHex == 14 :
x += "E"
if myHex == 15 :
x += "F"
else :
myHex = str(int(myHex))
x += myHex
dec = math.floor(dec/16)
remainder = dec/16 - math.floor(dec/16)
myHex2 = remainder*16
if myHex2 > 9 :
if myHex2 == 10 :
x += "A"
if myHex2 == 11 :
x += "B"
if myHex2 == 12 :
x += "C"
if myHex2 == 13 :
x += "D"
if myHex2 == 14 :
x += "E"
if myHex2 == 15 :
x += "F"
else :
myHex2 = str(int(myHex2))
x += str(myHex2)
x = x[::-1]
print ("Hex: " + x)
hexConvert(5368)
你需要移动 x
在您的 while 循环之外。使用 x = ""
后面的函数定义,然后删除重新定义的内容。前四行应该是这样的。
import math
def hexConvert(dec):
x = ""
while(math.floor(dec/16) > 0):
rem = dec/16 - math.floor(dec/16)
从现在开始,你每隔两位数就会清空X值,导致你失去了应该在最后的F8。