将二进制转换为十六进制等无功能。

时间:2012-06-14 08:12:05

标签: python binary hex decimal

我需要一些帮助转换:

  • 二进制 - 十六进制
  • 二进制十进制
  • 十六进制 - 十进制

反过来使用Python而不使用函数,例如binascii

我知道一点Python,我对数组有所了解。只是无法理解这一点。

3 个答案:

答案 0 :(得分:6)

嗯,有内置的转换函数如bin或hex或int,我不知道这会如何影响你的“不使用函数”。您可以检查以下代码。

# Convert decimal to binary
>>> bin(10)
'0b1010'
>>> bin(10)[2:]
'1010'
>>> bin(10)[2:].zfill(8)
'00001010'
# Convert binary to decimal
>>> int('00001010',2)
10
# Convert decimal to hexadecimal
>>> hex(123)
'0x7b'
>>> hex(123)[2:]
'7b'
>>> hex(123)[2:].zfill(8)
'0000007b'
# Convert hexadecimal to decimal
>>> int('0000007b', 16)
123
# Convert binary to hexadecimal
>>> hex(int('1010', 2))
'0xa'
# Convert hexadecimal to binary
>>> bin(int('A', 16))
'0b1010'

编辑:

示例算法..

def dec2bin(num):
    if num == 0: return '0'
    bin_str = ''
    while num > 0:
        bin_str = str(num % 2) + bin_str
        num = num / 2
    return bin_str

答案 1 :(得分:0)

无功能更新:

>>> for c,i in enumerate(st):
...        a+=i
...        if (c+1)%4==0:
...         print MORSECODEMAP[a]
...         a=''

答案 2 :(得分:-1)

使用base 2将字符串转换为int,然后转换为hex

>>> hex(int('010110', 2))
>>> '0x16'
>>> hex(int('0000010010001101', 2))
'0x48d'

没有功能:

101110101101 例如,要将101110101101转换为十六进制,请将其拆分为四个: 1011 1010 1101 B A D
现在将每个组映射到其莫尔斯代码..(如下)

0000 0

0001 1

0010 2

0011 3

0100 4

0101 5

0110 6

0111 7

1000 8

1001 9

1010 A

1011 B

1100 C

1101 D

1110 E

1111 F