当我创建一个字符的Python字符串时,即
txt = "h"
我检查它的大小,我得
import sys
sys.getsizeof(txt)
34
如果一个字符是34个字节,我该如何制作一个16个字符的字符串?
P.S。我正在玩PyCrypto AES, in OFB Mode,需要输入16个字节
答案 0 :(得分:2)
sys.getsizeof(obj)
返回对象的大小,包括内部值。它包含的不仅仅是字符串的字符或字节。
如果您想知道bytes
对象或str
有多长,那么您可以致电len(byteString)
或len(string)
。
我假设您要使用生成随机IV或密钥。这可以通过这种方式完成:
from Crypto import Random
iv = Random.new().read(16)
如果系统具有足够的熵,则调用CSPRNG。您也可以使用AES.block_size
代替16
。
答案 1 :(得分:1)
getsizeof
不返回字符串的实际大小,但它会占用额外的垃圾收集器开销。
如下所示,test
以空字符串开头,但由于上面列出的原因,为其分配的内存不为零。
>>> test = ""
>>> sys.getsizeof(test)
37
>>> test = "" + "h"
>>> sys.getsizeof(test)
38
>>> test = "" + "h" + "h"
>>> sys.getsizeof(test)
39
>>>
要创建一个16字节的字符串,一种方法是:
>>> test = " " * 16
>>> sys.getsizeof(test)
53
53 - 37 = 16字节