【发布时间】:2016-04-09 01:51:43
【问题描述】:
我有一个关于python2中os.urandom的输出格式的非常基本的问题,以及更普遍的字节表示。一个字节是 8 位,因此例如在二进制中,一个特定的单个字节将是:
10011001
os.urandom(n) 返回一个适合加密使用的随机 n 字节字符串。如果我打印出几个对os.urandom(1) 的调用,只生成一个字节,我会发现如下内容:
'\x1f', '\xa0', '#', '\xa4', "'", '\xa8', '+', '\xac', '/', '\xb0', '3', '\xb4', '7', '\xb8', ';', '\xbc', '?', '\xc0', 'C', '\xc4', 'G', '\xc8', 'K', '\xcc', 'O', '\xd0', 'S', '\xd4', 'W', '\xd8', '['
因此,urandom() 似乎不是将一个字节表示为 8 位,而是表示为 2 位十六进制数字(两者都有意义,因为 2^8 = 16^2)。我的困惑是,上面只有一些是 2 位十六进制数字,还有像“S”或“?”这样的字符。或者 '['。输出格式是什么?将像“[”这样的输出转换为二进制的规则是什么?
【问题讨论】: