首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二进制-十六进制转换器

二进制-十六进制转换器
EN

Stack Overflow用户
提问于 2016-10-03 11:59:11
回答 3查看 3.1K关注 0票数 0

我编写了一个代码,试图将一个4位二进制数字转换为十六进制.唯一的问题是,当我键入一个以'1‘开头的值时,它会产生转换,而如果我键入一个以'0’开头的值,则不起作用。有什么帮助吗?

代码语言:javascript
复制
print ("""Here's how the program will work. You need to get your binary number ready.
        if it is 8 bit, split it into four, because thats how hexadecimal works. Make sure all your conversions
        are slip into '4' bits like this:
        01001101 will turn into:
        0100 ,and then 1101""")
time.sleep(6)
print ("""So, for example, the program will ask you for your binary number. Like this:
        Enter your binary number here:
        Then you put in your number, like this:
        Enter your binary number here: 0100
        Lastly, the program will give you your hexadecimal number, then ask you if you would
        like to do another conversion in this area, or end program.""")
time.sleep(6)
HEXADECIMAL = int(input("Please enter your binary number here:   "))                         
if HEXADECIMAL == 0000:
    print ("Your hexadecimal value is 0")
if HEXADECIMAL == 0001:
    print ("Your hexadecimal value is 1")
if HEXADECIMAL == 0010:
    print ("Your hexadecimal value is 2")
if HEXADECIMAL == 0011:
    print ("Your hexadecimal value is 3")
if HEXADECIMAL == 0100:
    print ("Your hexadecimal value is 4")
if HEXADECIMAL == 0101:
    print ("Your hexadecimal value is 5")
if HEXADECIMAL == 0110:
    print ("Your hexadecimal value is 6")
if HEXADECIMAL == 0111:
    print ("Your hexadecimal value is 7")
if HEXADECIMAL == 1000:
    print ("Your hexadecimal value is 8")
if HEXADECIMAL == 1001:
    print ("Your hexadecimal value is 9")
if HEXADECIMAL == 1010:
    print ("Your hexadecimal value is A")
if HEXADECIMAL == 1011:
    print ("Your hexadecimal value is B")
if HEXADECIMAL == 1100:
    print ("Your hexadecimal value is C")
if HEXADECIMAL == 1101:
    print ("Your hexadecimal value is D")
if HEXADECIMAL == 1110:
    print ("Your hexadecimal value is E")
if HEXADECIMAL == 1111:
    print ("Your hexadecimal value is F")

您可以尝试运行这段代码,并从0110开始,但是它不会转换。有什么帮助吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-03 12:13:04

您不必每次都使用if/else语句。有一种很酷的方法可以在python中使用int(),如果您使用一个字符串,int()函数可以直接将它转换为任何基。

代码语言:javascript
复制
HEXADECIMAL = str(input())

base = 16 # for Hex and 2 for binary
msg = "Your hexadecimal value is"
print (msg, int(HEXADECIMAL, base))

这会帮你的。但是,如果您想继续使用您的方法,那么您可能应该在二进制之前在0b中添加一个0b0010,并执行一些操作,前导零是非法的,0010是非法的。

票数 0
EN

Stack Overflow用户

发布于 2016-10-03 12:05:17

当输入以前导0开头的整数时,python将其解释为基数为8:

代码语言:javascript
复制
a = 0110
print a

威尔输出

代码语言:javascript
复制
72

因此,在您的输入中删除前面的0,或者在对其进行int()转换之前删除它们。

票数 0
EN

Stack Overflow用户

发布于 2016-10-03 12:05:52

替换,

代码语言:javascript
复制
HEXADECIMAL = int(input("Please enter your binary number here:   ")) 

带着,

代码语言:javascript
复制
temp = input("Please enter your binary number here:   ")                       
HEXADECIMAL = int (temp)

另外,如果出现错误,则删除睡眠时间。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39831062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档