面具及;在python中取消屏蔽websocket数据

面具及;在python中取消屏蔽websocket数据,python,websocket,mask,Python,Websocket,Mask,我正在尝试创建一个可以连接到websocket服务器的python websocket类,我需要帮助编写一个可以屏蔽和取消屏蔽数据的函数。我在PHP中有一个类似的websocket类,如下所示: function unmask($text) { $length = ord($text[1]) & 127; if($length == 126) { $masks = substr($text, 4, 4); $data = substr($text, 8); } elsei

我正在尝试创建一个可以连接到websocket服务器的python websocket类,我需要帮助编写一个可以屏蔽和取消屏蔽数据的函数。我在PHP中有一个类似的websocket类,如下所示:

function unmask($text) {
$length = ord($text[1]) & 127;
if($length == 126) {
    $masks = substr($text, 4, 4);
    $data = substr($text, 8);
}
elseif($length == 127) {
    $masks = substr($text, 10, 4);
    $data = substr($text, 14);
}
else {
    $masks = substr($text, 2, 4);
    $data = substr($text, 6);
}
$text = "";
for ($i = 0; $i < strlen($data); ++$i) {
    $text .= $data[$i] ^ $masks[$i%4];
}
return $text;
函数取消掩码($text){
$length=ord($text[1])&127;
如果($length==126){
$masks=substr($text,4,4);
$data=substr($text,8);
}
elseif($length==127){
$masks=substr($text,10,4);
$data=substr($text,14);
}
否则{
$masks=substr($text,2,4);
$data=substr($text,6);
}
$text=”“;
对于($i=0;$i
}

函数掩码($text){
$b1=0x80 |(0x1和0x0f);
$length=strlen($text);
如果($长度125&$长度<65536)
$header=pack('CCn',$b1,126,$length);
elseif($length>=65536)
$header=pack('CCNN',$b1127,$length);
返回$header.$text;
}
所以我试着用Python创建同样的东西:

def mask(text):
    b1 = 0x80 | (0x1 & 0x0f)
    length = len(text)

    if length <= 125:
        header = struct.pack('CC', b1, length)
    if length > 125 & length < 65536:
        header = struct.pack('CCn', b1, 126, length)
    if length <= 65536:
        header = struct.pack('CCNN', b1, 127, length)
    return header + text
def掩码(文本):
b1=0x80 |(0x1和0x0f)
长度=长度(文本)
如果长度125&长度<65536:
页眉=结构包('CCn',b1,126,长度)

如果长度我发现了一个非常有用的脚本,它完全符合我的需要


在python中,当您在php中使用
elseif
时,您不会使用
elif
。@PaulRooney我没有。。。我一直使用if.php
elseif($length>=65536)
python
if length@PaulRooney噢,length=65536,但这并不能解决问题。在php的格式字符串中,
C
=无符号字符,
n
=无符号短,
n
=python中的无符号长,
B
=无符号字符,
H
=无符号短,
L
=无符号长。你不会得到太多重复发布链接。你最好在答案中写上实际的代码:)
def mask(text):
    b1 = 0x80 | (0x1 & 0x0f)
    length = len(text)

    if length <= 125:
        header = struct.pack('CC', b1, length)
    if length > 125 & length < 65536:
        header = struct.pack('CCn', b1, 126, length)
    if length <= 65536:
        header = struct.pack('CCNN', b1, 127, length)
    return header + text