python os.urandom()函数和十六进制\xhh的一些认识

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编辑如果想添加引用怎么操作啊,等一个有缘人!

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值