JS:编码/解码优化

问题描述

我需要2个简单函数才能将2个小(8位)数字编码/解码为1个(16位)。

我是这样写的:

function encode(i,j) {
  const int16 = new Int16Array(1)
  const int8 = new Int8Array(int16.buffer)
  int8[0] = i
  int8[1] = j
  return int16[0]
}

function decode(x) {
  const int16 = new Int16Array(1)
  int16[0] = x
  const int8 = new Int8Array(int16.buffer)
  return [int8[0],int8[1]]
}

但是我认为可以轻松得多,有什么建议吗?

解决方法

是的。使用按位运算符可以轻松完成此操作。您的代码使用系统的endianness,但是此代码始终使用little-endian。

{EventsList.forEach((monthObj) => {
    const monthObjKeys = Object.keys(monthObj);
    monthObjKeys.map((monthKey) => {
        const monthArr = monthObj[monthKey];
        return (
            <div className='Events__ItemList'>
                <h1 className='Events__Month'>{monthObjKeys}</h1>
                <div className='Events__Item'>
                    <p className='Events__Date'>{monthArr.Date}</p>
                    <p className='Events__Name'>{monthArr.Name}</p>
                </div>
            </div>
        );
    });
})}