【发布时间】:2018-10-13 03:21:59
【问题描述】:
我正在使用 Python 中的音频编解码器(yikes)使用字节数组来编辑音频文件中的单个字节数据。
我想到了某种加密,它要求我对存储在字节数组中的单个字节执行按位操作。
其中一个操作是~ 运算符(按位非),它实质上反转了位(b'0001 变为 b'1110)。
问题是当您引用字节数组的单个元素时,它会返回一个 int(默认情况下 Python 是否考虑无类型的 8 位数据整数?)。 Python 中的整数默认是有符号的(我认为 Python 中甚至不存在无符号整数)。
当您尝试对字节数组中的一个字节执行按位 NOT 操作时,您会收到以下错误:
>>> array[0] = ~array[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: byte must be in range(0, 256)
这是因为它需要一个介于 0-255 之间的无符号整数。如何将有符号整数转换为无符号整数,以使用于表示两个值的位保持不变?
干杯
【问题讨论】:
-
我认为 numpy 应该提供无符号整数。我会尝试 np.array(array).astype(np.uint8)
-
“我想到了某种加密”——你是在写自己的加密吗? Please don't write your own crypto.
-
哈哈不...我永远不会尝试那样...试图模仿其他东西
标签: python arrays binary codec