gpt4 book ai didi

javascript - JS 与 Python 字节数组编码

转载 作者:行者123 更新时间:2023-11-30 15:03:56 26 4
gpt4 key购买 nike

我正在尝试将字节数组转换为字符串,然后通过套接字将其发送到远程服务器。我已经在 Python 中成功地制作了代码原型(prototype),并正在尝试将其迁移到 Javascript

由于某种原因,两种语言的最后一个字符存在差异。

Python 代码

def make_checksum(data):
num = 0x00
for num2 in data:
num = (num + num2) & 0xFF
return num

data = [0x56, 0x54, 0x55, 0x3E, 0x28, 0x00, 0x08,
0x00, 0x03, 0x01, 0x46, 0x00, 0x00, 0x00, 0xC0]
message = bytearray(data + [make_checksum(data)])

Javascript

function checksum(data) {
let res = 0x00
for (let i = 0; i < data.length; ++i) {
res = (res + data[i]) & 0xFF
}
return String.fromCharCode(res)
}

let data = new Int8Array([0x56, 0x54, 0x55, 0x3E, 0x28, 0x00,
0x08, 0x00, 0x03, 0x01, 0x46, 0x00, 0x00, 0x00, 0xC0])
let message = String.fromCharCode(...data) + checksum(data)

我认为这可能与 asciiUTF 之间的区别有关。

最佳答案

@Ryan的帮助下我能够通过使用 Buffer 而不是无符号数组来解决问题。

代码

function checksum(data) {
let res = 0x00
for (let i = 0; i < data.length; ++i) {
res = (res + data[i]) & 0xFF
}
return Buffer.from([res])
}

let data = Buffer.from([0x56, 0x54, 0x55, 0x3E, 0x28, 0x00,
0x08, 0x00, 0x03, 0x01, 0x4F, 0x00, 0x00, 0x00])
console.log(Buffer.concat([data, checksum(data)]))

关于javascript - JS 与 Python 字节数组编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46087353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com