为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

德玛西亚99 2021-06-18 17:01:46
我正在尝试对两个值进行编码,一个可以是 0、1、2 或 3 的“移动方向”和一个也可以是 0、1、2 或 3 的“看方向”我知道可以将此信息存储为一个字节所以我仍然是位运算的新手,所以试图弄清楚这一点让我很难过。我想有一个像function encode(m, l) {   // returns byte}function decode(byte) {    // returns { m, l }}
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

所以首先,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


查看完整回答
反对 回复 2021-06-24
  • 3 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信