os.urandom()与十六进制\xhh
os.urandom()函数在python官方文档中做出了这样的解释:
Return a string of n random bytes suitable for cryptographic use.
即返回一个长为n个bytes的string,然后很适合用于加密。python的这个函数实际上是在读取OS操作系统提供的随机源,关于加密应用暂且不考虑。
这里作者就在使用之前,调用一个简单for循环打印一下它的输出
for i in range(10):
print(os.urandom(i))
它的输出:
b''
b'6'
b'Rj'
b'}\x13\xca'
b't\xc79w'
b'UF^f\x8b'
b'D\xf6\x14b\xd9n'
b'\xe4\xa5\xc1\t\x0b\xf4u'
b'\x8d\x94A\xd4qO\x07\x9d'
b'\x86Q\xe2\n\xfa\xaa\xf0\xd5H'
为了方便确认这个是个字符串的长度,调整代码:
for i in range(10):
print(len(os.urandom(i)))
输出自然为每个字符串的长度,分别为0~9
0
1
2
3
4
5
6
7
8
9
但是再翻上去看字符串的输出,有一个困惑的地方就是\x,查阅资料:引用_详情点我
\xhh | 值为十六进制数hh的字符串 |
---|
即,在较长字符串中\x的作用域只有后面紧跟的两字符,而我们知道十六进制表示成二进制0000~1111占4bits,其中0000为十进制0、1111为十进制15。所以两个十六进制位数正好是8bits,即一个byte,是这样再看urandom的输出:
b''---0 byte
b'6'---1 byte
b'Rj'---2 bytes
b'}\x13\xca'---1+1+1---3 bytes
b't\xc79w'---1+1+2---4 bytes
b'UF^f\x8b'---4+1---5 bytes
b'D\xf6\x14b\xd9n'----1+1+1+1+1+1---6 bytes
小知识又增加了!
但是一个问题,makedown编辑如果想添加引用怎么操作啊,等一个有缘人!