处理超出范围(0, 256)的python bytes()的变通方法
我想找个办法来解决Python中的bytes()函数的问题,因为它最多只能处理256个字符。这个代码:
def mask(rawBytes):
data = [ord(i) for i in rawBytes]
length = len(rawBytes) + 128
Bytes = [0x81, length]
index = 2
mask = os.urandom(4)
for i in range(len(mask)):
Bytes.insert(i + index, mask[i])
for i in range(len(data)):
data[i] ^= mask[i % 4]
Bytes.insert(i + index + 4, data[i])
return bytes(Bytes)
可以对我需要的数据进行处理。但是,如果我尝试处理一个很长的字符串,就会出现这个问题:
>>> mask('i'*1000)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
mask('i'*1000)
File "C:/Python33/cakelibw.py", line 546, in mask
return bytes(Bytes)
ValueError: bytes must be in range(0, 256)
>>>
有没有什么办法可以解决这个问题?或者有没有其他方法可以处理长字符串呢?
1 个回答
1
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能在使用一个特定的功能时,发现它没有按照预期工作,或者出现了错误信息。这种情况下,我们可以去一些技术论坛,比如StackOverflow,寻求帮助。
在这些论坛上,很多人会分享他们的经验和解决方案。你可以看到其他人遇到的类似问题,以及他们是如何解决的。这不仅能帮助你找到答案,还能让你学到一些新的技巧和知识。
总之,遇到问题时,不要害怕去问,很多人都愿意分享他们的经验,帮助你解决问题。
def mask(rawBytes):
data = [ord(i) for i in rawBytes]
length = len(rawBytes) + 128 if len(rawBytes) + 128 <= 254 else 254
Bytes = [0x81, length]
index = 2
mask = os.urandom(4)
for i in range(len(mask)):
Bytes.insert(i + index, mask[i])
for i in range(len(data)):
data[i] ^= mask[i % 4]
Bytes.insert(i + index + 4, data[i])
return bytes(Bytes)