gpt4 book ai didi

javascript - 将两个0-3的整数值编码和解码为一个字节

转载 作者:行者123 更新时间:2023-11-30 06:15:20 24 4
gpt4 key购买 nike

我正在尝试对两个值进行编码,一个是可以是 0、1、2 或 3 的“移动方向”,另一个是也可以是 0、1、2 或 3 的“视线方向”

我知道可以将这些信息存储到一个字节中

所以我在按位运算方面仍然是个新手,所以试图弄清楚这个问题让我很困惑。

我想拥有类似的功能

function encode(m, l) {
// returns byte
}

function decode(byte) {
// returns { m, l }
}

最佳答案

所以首先,Javascript 没有字节数据类型。它只有数字类型。 Javascript 不需要将结果存储在单个字节中,即使它适合一个字节。

您需要 2 位来存储数字 0、1、2 或 3。还有两个位来存储其他 0,1,2,3。第二个数字需要移位 2 位并添加到第一个数字。这与乘以 4 相同。所以...

function encode(m,l) {
return m + l * 4;
}

function decode(byte) {
var m = byte % 4;
var l = (byte - m ) /4;
return {m:m, l:l};
}

通过查找执行此操作可能会更快。

 (0,0) <=> 0
(1,0) <=> 1
(2,0) <=> 2
(3,0) <=> 3
(0,1) <=> 4
(1,1) <=> 5
(2,1) <=> 6
(3,1) <=> 7
(0,2) <=> 8
(1,2) <=> 9
(2,2) <=> 10
(3,2) <=> 11
(0,3) <=> 12
(1,3) <=> 13
(2,3) <=> 14
(3,3) <=> 15

关于javascript - 将两个0-3的整数值编码和解码为一个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56517972/

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