继续借助两个变量的数据互换这道题目说事。
在网上搜索两个变量的数据互换的编程思路时,我看到一个不常见的解法。这个解法运用到“位”的运算。


byte转为十六进制 python python byte转二进制_十进制


什么是“位”?又如何来进行“位”的运算呢?
“位”是数据存储的最小单位。在计算机中二进制数系统中,每个0或1就是一个“位”,英文写作bit,简记为b,称为比特。“位”就如同下图中的格子,每一个格子就是一个“位”,而每一个“位”存储的数据只有两种可能,要么是“0”,要么是“1”。我们将8个“位”称为一个“字节”,英文是Byte。“位”和“字节”的转换公式是:8b=1B。字节大小的转换关系是这样的:1024B=1KB,1024KB=1MB,1024MB=1GB,1024GB=1TB……


byte转为十六进制 python python byte转二进制_byte转为十六进制 python_02


对于“位”有一些了解了。下面我们就来谈谈二进制。
提起二进制,想到了一个段子:老师让学生从1数到100,一位学生回答说:“1、10、11、100,老师,我数好了。”老师:“?”学生回答:“我是用二进制数的。”
和满10进一位的十进制不同,二进制是满2就要进一位的一种进制,二进制只有两个数值:0和1。如果你初次接触二进制,建议你不妨先做一个将十进制的0-10转换成二进制的练习。最容易犯错的地方是十进制的4和8。下图是十进制0-10对应的二进制,看看你转换对了没有。


byte转为十六进制 python python byte转二进制_python十进制转二进制_03


对二进制有了一个初步的认识,你可能会想,我如何将任意一个十进制数转换成二进制数呢?或者将任意一个二进制数转换成十进制数呢?方法自然有许多,比如数学的计算方法、运用电脑上的计算器,当然更可以借助python语言编写代码来实现。python内置了进制转换的函数,我们可以借助这些内置的函数进行转换。
二进制函数:bin(),八进制函数:oct(),十六进制函数:hex()

十进制和二进制转换------

我们先来试一下十进制转换二进制。
【挖坑试错】


print(bin(1919))


运行结果:0b11101111111,“0b”可以理解成“二进制数是”。

我们再来试一下二进制转换十进制。我想将11111111这个二进制数转换成十进制数。
【挖坑试错】


print(int(11111111,2))


运行结果如下图:


byte转为十六进制 python python byte转二进制_十进制_04


意思是:类型错误,不能转换非字符串之类。啥意思?莫非要将二进制数设成字符串?
【挖坑试错】


print(int("11111111",2))


运行结果是:256!正确!

十进制和二十六进制转换------

十进制转换成十六进制,代码该如何写?
【挖坑试错】


print(hex(1919))


运行结果是:0x77f,“0x”可以理解成“十六进制数是”。0x77f就是十六进制数为77f

十六进制转换成十进制,代码如何写呢?
【挖坑试错】


print(int("77e",16)) #注意:括号不能少


运行结果:1918,正确。十六进制转换成十进制,还可以用eval函数


print(eval("0x77e"))


运行结果:1918,正确。eval函数还有很多应用,边学边了解吧……

位运算又是怎么回事呢?要麻烦您继续关注后续文章。