总结
使用硬性指派确实帮助了我很多。循环步幅是很好的使用工具。
前言
如何转换呢??二进制转十六进制
通过智能ai一下子就生成了!!哇塞!!质的飞跃。
但是我还是用毕竟原始的办法来弄吧。
第一章 二进制转十六进制的方法
将二进制数从右到左每4位分成一组(不足4位时左边补0)
将每组4位二进制数转换为对应的十六进制数
将转换后的十六进制数按顺序组合起来
转换对照表:
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
这个方法似乎挺简单
我做到每4位进行变化就可以。
- 实现通过s[1:i],4个、4个来进行识别
- 对了出现了一个问题,就是前缀如果前缀中出现了‘0b’这样的肯定不行。只能是00、01、10、11这四个前缀并且是能被4整除的2进制编码才可以进行运算
第二章 初次尝试代码
- 此处的逻辑是我认为可以通过将字符串按4个为一个间隔进行区分。
def binary_to_hex(binary_value):
if len(binary_value) % 4 == 0:
# 我希望通过这个for循环帮助我完成这个区分。但是现在看来她好像走的很多。
for i in range(0,len(binary_value)):#其实差了点什么
a = binary_value[i:i+4]
print(a)
else:
print('对不起请输入符合16进制转换要求的2进制代码')
binary_text = '001101011101'
binary_to_hex(binary_text)
但是结果很有意思
第三章 其实只是差了个步幅
# 加了一个步幅4
for i in range(0,len(binary_value),4):
a = binary_value[i:i+4]
print(a)
我们得到了分割好的3个二进制编码组。,然后接下来就是如何把他们进行转换
def hex_text(text_binary):
text_num = ''
if text_binary == '0000':
text_num = '0'
elif text_binary == '0001':
text_num = '1'
elif text_binary == '0010':
text_num = '2'
elif text_binary == '0011':
text_num = '3'
elif text_binary == '0100':
text_num = '4'
elif text_binary == '0101':
text_num = '5'
elif text_binary == '0110':
text_num = '6'
elif text_binary == '0111':
text_num = '7'
elif text_binary == '1000':
text_num = '8'
elif text_binary == '1001':
text_num = '9'
elif text_binary == '1010':
text_num = 'A'
elif text_binary == '1011':
text_num = 'B'
elif text_binary == '1100':
text_num = 'C'
elif text_binary == '1101':
text_num = 'D'
elif text_binary == '1110':
text_num = 'E'
elif text_binary == '1111':
text_num = 'F'
print(text_num)
def binary_to_hex(binary_value):
if len(binary_value) % 4 == 0:
for i in range(0, len(binary_value), 4):
a = binary_value[i:i + 4]
return a
else:
print('对不起请输入符合16进制转换要求的2进制代码')
binary_text = '001101011101'
temp_a = binary_to_hex(binary_text)
print(temp_a)
- 我通过建立了一个hex_text的十六进制字典来硬性指派每一个十六进制和二进制的对应
- 但是好像不行。为了return这个binary_to_hex,我做了一个return,那么他就失去了之前for循环对整个字符串都遍历一遍的功能。
怎么办把两个函数合并到一起?
第四章 把两个函数合并到一起
def binary_to_hex(binary_value):
if len(binary_value) % 4 == 0:
for i in range(0, len(binary_value), 4):
a = binary_value[i:i + 4]
print(hex_text(a))# 把hex_text放到里面不就成功了吗?
else:
print('对不起请输入符合16进制转换要求的2进制代码')
binary_text = '001101011101'
binary_to_hex(binary_text)
把hex_text放到里面不就成功了吗?可是
print(hex_text(a))#
这3个none是干嘛的呢??
我好像明白了,因为我的代码中
else的出现让没进行一次循环后,她会有意识的进行一次else的识别。发现不是就显示none
但是又感觉不像是else的问题。因为在将print(a)进行输出的时候 是没有none所以这个错误是不是在别的地方呢??
第五章 我找到了错误的来源
在函数def hex_text(text_binary):代码段中最后我写的是print(text_num)
我现在将这个print改成了return
就成功了
三个二进制代码变成了十六进制。
第六章 最终代码
def hex_text(text_binary):
text_num = ''
if text_binary == '0000':
text_num = '0'
elif text_binary == '0001':
text_num = '1'
elif text_binary == '0010':
text_num = '2'
elif text_binary == '0011':
text_num = '3'
elif text_binary == '0100':
text_num = '4'
elif text_binary == '0101':
text_num = '5'
elif text_binary == '0110':
text_num = '6'
elif text_binary == '0111':
text_num = '7'
elif text_binary == '1000':
text_num = '8'
elif text_binary == '1001':
text_num = '9'
elif text_binary == '1010':
text_num = 'A'
elif text_binary == '1011':
text_num = 'B'
elif text_binary == '1100':
text_num = 'C'
elif text_binary == '1101':
text_num = 'D'
elif text_binary == '1110':
text_num = 'E'
elif text_binary == '1111':
text_num = 'F'
return text_num
def binary_to_hex(binary_value):
if len(binary_value) % 4 == 0:
print(f'二进制代码段{binary_value} 转十六进制代码段{a}')
for i in range(0, len(binary_value), 4):
a = binary_value[i:i + 4]
print(hex_text(a), end="")
else:
print('对不起请输入符合16进制转换要求的2进制代码')
binary_text = '001101011101'
binary_to_hex(binary_text)