【问题标题】:How do I convert Bytes to Integers in Javascript?如何在 Javascript 中将字节转换为整数?
【发布时间】:2020-06-18 03:03:24
【问题描述】:

我在 Python 上运行一个服务器,它将数据发送到 JavaScript。但是,此服务器只能发送字节。我需要数据为整数形式。有没有办法在 Javascript 中转换它。

这是接收数据的代码行。如何将 evt.data 从字节转换为整数。我从 Python 收到的是 b' 后跟数字。示例:b'120'

ws.onmessage = function (evt) {
                  var received_msg = evt.data;

这是用于从 Python 发送数据的代码行。它是 UDP,不幸的是只能发送字节。我正在将数据从 python 服务器发送到 python 客户端,然后到 python websocket 服务器。不幸的是,python web 套接字服务器无法发送通过“int()”方法转换为整数的字节。

sock.sendto(bytes(MESSAGE, "utf-8"), (ip_address, UDP_PORT))

我需要做什么?提前致谢! :)

【问题讨论】:

  • Javascript 中要清楚,你得到一个字符串行"b'120'"?这似乎不正确,因为这就是 python 字节表示为字符串的方式。
  • 是的!你是对的,我是通过“str()”方法传递的! @MarkMeyer

标签: javascript python parsing websocket type-conversion


【解决方案1】:

希望对你有帮助

function binToInt(bin){
	return parseInt(bin, 2);
}

console.log(binToInt("00101001"));	//Outputs 41

【讨论】:

  • What I'm receiving from Python is the b' followed by the number. Example: b'120'b'120' 传递给函数会发生什么?
【解决方案2】:

Javascript 不支持 64 位整数。也就是说,这个函数应该可以处理 32 位有符号整数:

var byteArrayToInt = function(byteArray) {
    var value = 0;
    for (var i = byteArray.length - 1; i >= 0; i--) {
        value = (value * 256) + byteArray[i];
    }

    return value;
};

【讨论】:

    猜你喜欢
    • 2020-02-05
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    相关资源
    最近更新 更多