如何快速简单地用4位打包带符号值?

-2 投票
1 回答
41 浏览
提问于 2025-04-14 17:17

我有一个包含整数的Python列表,这些整数的范围在[-8, 7]之间。我想把这些值打包成一个字节数组,然后通过网络连接发送出去。因为这些值可以用4个二进制位表示,所以每个字节可以装下两个这样的值。请问在Python中,有什么好的方法可以快速实现这个打包呢?谢谢!

1 个回答

-1

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当用户点击一个按钮时,我们希望程序能做出反应。这种情况下,我们就需要用到“事件处理”。

事件处理就是指程序能够监听用户的操作,比如点击、输入等,然后根据这些操作来执行相应的代码。想象一下,你在玩一个游戏,按下某个键后,角色就会跳起来,这就是事件处理在起作用。

通常,我们会为每个可能的用户操作设置一个“事件监听器”。这个监听器就像一个守卫,时刻关注用户的动作,一旦发现有动作发生,就会触发相应的代码来处理这个动作。

例如,如果我们有一个按钮,用户点击它时,我们可以让程序显示一条消息。这个过程就可以用事件处理来实现。

总之,事件处理让我们的程序能够与用户互动,使得程序不仅仅是死板的代码,而是一个能够响应用户需求的智能系统。

def pack_integer(integers):
    packed_byte = bytearray() 
    current_byte = 0
    bit_position = 0
    for integer in integers:
        integer = max(-16,min(integer, 15))
        if integer < 0:
            integer += 32
        current_byte |= (integer & Ox1F) << bit_position
        bit_position += 4
        if bit_position >= 8:
           packed_bytes.append(current_byte)
           current_byte = 0
           bit_position = 0
       if bit_position > 0:
           packed_bytes.append(current_byte)
       return packed_bytes 

撰写回答