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

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


我知道可以将此信息存储为一个字节


所以我仍然是位运算的新手,所以试图弄清楚这一点让我很难过。


我想有一个像


function encode(m, l) {

   // returns byte

}


function decode(byte) {

    // returns { m, l }

}


德玛西亚99
浏览 121回答 3
3回答

慕容708150

所以首先,Javascript 没有字节数据类型。它只有数字类型。Javascript 不需要将您的结果存储在单个字节中,即使它适合一个字节。您需要 2 位来存储数字 0、1、2 或 3。另外两个位来存储其他 0、1、2、3。第二个数字需要位移 2 位并添加到第一个数字。这与乘以 4 相同。所以...function encode(m,l) {&nbsp; &nbsp; return m + l * 4;}function decode(byte) {&nbsp; var m = byte % 4;&nbsp; var l = (byte - m ) /4;&nbsp; return {m:m, l:l};}通过查找来执行此操作可能会更快。&nbsp;(0,0) <=> 0&nbsp;(1,0) <=> 1&nbsp;(2,0) <=> 2&nbsp;(3,0) <=> 3&nbsp;(0,1) <=> 4&nbsp;(1,1) <=> 5&nbsp;(2,1) <=> 6&nbsp;(3,1) <=> 7&nbsp;(0,2) <=> 8&nbsp;(1,2) <=> 9&nbsp;(2,2) <=> 10&nbsp;(3,2) <=> 11&nbsp;(0,3) <=> 12&nbsp;(1,3) <=> 13&nbsp;(2,3) <=> 14&nbsp;(3,3) <=> 15
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript