这个函数将十进制转换为十六进制,但是它只打印了两个数字。我怎样才能让它打印更多的数字?

问题描述 投票:0回答:1

这个函数只接受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)
python hex decimal
1个回答
0
投票

你需要移动 x 在您的 while 循环之外。使用 x = "" 后面的函数定义,然后删除重新定义的内容。前四行应该是这样的。

import math

def hexConvert(dec):
  x = ""
  while(math.floor(dec/16) > 0):
    rem = dec/16 - math.floor(dec/16)

从现在开始,你每隔两位数就会清空X值,导致你失去了应该在最后的F8。

© www.soinside.com 2019 - 2024. All rights reserved.