在python中为websocket rfc6455提取/移位位

2024-04-20 10:26:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在python im中实现我自己的Websocket服务器,遵循rfc6455规范,im在从基帧头提取比特时遇到问题

我没有问题的协议,我有问题的基本二进制/十六进制数学魔术

根据规范,前4位是单位值

所以为了得到第一位,我做了这样的事情(d是我从websocket获得的数据)

first_byte = ord(d[0])
print "finished bit",(first_byte >> 7) & 1

以后如果我想知道有效载荷的大小

^{pr2}$

但是在后面的规范中,我需要为操作码获取一个4位值 这是我需要的帮助,也许甚至是一个链接到这个数学是如何工作的我谷歌/达克我的大脑大部分结果是从stackoverflow

更多的修补和它开始到位,我已经在这个问题上坚持了大约4天,仍然没有解决任何人可以提供的信息。在


Tags: 规范服务器协议二进制魔术单位数学byte
1条回答
网友
1楼 · 发布于 2024-04-20 10:26:43

如果只需要考虑第一个(最重要的)4位,则需要右移4位(如果您的值在0-255范围内,但它甚至会强调您感兴趣的位),则需要右移4位。E、 g

>>> d = [128, 80, 40]
>>> print (d[0] >> 4) & 15
8
>>> print (d[1] >> 4) & 15
5
>>> print (d[2] >> 4) & 15
2

从{cd4}中得到{cd4}是新的{cd4},因此{cd4}是^新的{cd4},因此^ 4}是{cd4>

一般来说,考虑像abcd efgh这样的八位字节,其中每个字母都是一位。你必须转移和和,以便分离出你感兴趣的部分。E、 假设你的规范说cd位定义了四种不同的东西。为了得到这个0-3的数字,再右移4,加上3,就是0000 0011,也就是说,你“隔离”了你想要的位。在

相关问题 更多 >