Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对要发送到websocket服务器的数据进行编码_Python_Node.js_Sockets_Websocket - Fatal编程技术网

Python 对要发送到websocket服务器的数据进行编码

Python 对要发送到websocket服务器的数据进行编码,python,node.js,sockets,websocket,Python,Node.js,Sockets,Websocket,在尝试连接到websocket服务器并向其发送信息后,我遇到了一个编码问题。 我有一个字符串和这个字符串的编码(十六进制)版本。假设我的字符串是'getpremium'如何将该字符串转换为这些十六进制值的数组 [0x81, 0x8c, 0x86, 0x78, 0xe3, 0xc6, 0xe1, 0x1d, 0x97, 0xb6, 0xf4, 0x1d, 0x8e, 0xaf, 0xf3, 0x15, 0xee, 0xcc] 我可以将这些值解码回原始字符串,但我不知道它们是如何编码成这些十六进制

在尝试连接到websocket服务器并向其发送信息后,我遇到了一个编码问题。 我有一个字符串和这个字符串的编码(十六进制)版本。假设我的字符串是
'getpremium'
如何将该字符串转换为这些十六进制值的数组

[0x81, 0x8c, 0x86, 0x78, 0xe3, 0xc6, 0xe1, 0x1d,
0x97, 0xb6, 0xf4, 0x1d, 0x8e, 0xaf, 0xf3, 0x15,
0xee, 0xcc]
我可以将这些值解码回原始字符串,但我不知道它们是如何编码成这些十六进制值的。基本上,我如何对字符串“getpremium”进行编码,以获取编码后的值,并将其发送到此websocket服务器。任何使用python或node.js的方法都适用

javascript解码方法:

var _ = require("underscore");
function decode(data){
        if (typeof data === 'string') {
                data = _.map(data, function(chr){ return chr.charCodeAt(0); });
        }
        var datalength = data[1] & 127;
        var indexFirstMask = 2;
        if (datalength == 126) {
                indexFirstMask = 4;
        } else if (datalength == 127) {
                indexFirstMask = 10;
        }
        var masks = data.slice(indexFirstMask,indexFirstMask + 4);
        var i = indexFirstMask + 4;
        var index = 0;
        var output = "";
        while (i < data.length) {
                x = data[i++] ^ masks[index++ % 4];
                output += String.fromCharCode(x);
        }
        return output;
}
var=require(“下划线”);
功能解码(数据){
如果(数据类型=='string'){
data=uu.map(数据,函数(chr){return chr.charCodeAt(0);});
}
var datalength=data[1]&127;
var indexFirstMask=2;
如果(数据长度==126){
indexFirstMask=4;
}else if(datalength==127){
indexFirstMask=10;
}
变量掩码=data.slice(indexFirstMask,indexFirstMask+4);
var i=indexFirstMask+4;
var指数=0;
var输出=”;
而(i
试试这个:

import os

def encode(rawBytes):
    data = [ord(i) for i in rawBytes]
    length = len(rawBytes) + 128
    Bytes = [0x81, length]
    index = 2
    masks = os.urandom(4)
    for i in range(len(masks)):
           Bytes.insert(i + index, masks[i])        
    for i in range(len(data)):
        data[i] ^= masks[i % 4]
        Bytes.insert(i + index + 4, data[i])
    return [hex(i) for i in Bytes]