Source: byte.js

/*
 字节操作
 Thanks:https://github.com/zenxds/byte-tool/blob/master/index.js
 */

/**
 * [move description] 将数字右移
 * @param v {String}   原数字
 * @param bits {Number}  移动位数
 * @param bytes {Number}  控制右移之后的结果范围
 * @return {Number}  返回右移结果
 */

function move(v, bits, bytes){
  return (v >> bits) & (Math.pow(2, (typeof bytes === 'undefined' ? 1 : bytes) * 8) - 1);
}


/**
 * [bs2 description] 通过字节操作将数字转换成有2个字节的数组
 * @param v {Number}   原数字
 * @return {Array}  转换后的数组
 */
var bs2 = function(v) {
    return [move(v, 8), move(v, 0)]
};

/**
 * [bs4 description] 通过字节操作将数字转换成有4个字节的数组
 * @param v {Number}   原数字
 * @return {Array}  转换后的数组
 */
var bs4 = function(v) {
    return bs2(move(v, 16, 2)).concat(bs2(move(v, 0, 2)))
};


/**
 * [bs8 description] 通过字节操作将数字转换成有8个字节的数组
 * @param v {Number}   原数字
 * @return {Array}  转换后的数组
 */
var bs8 = function(v) {
    return bs4(v / Math.pow(2, 32)).concat(bs4(v, 0, 4))
};