如何增加总bye数组的值

时间:2015-10-12 14:21:57

标签: javascript bytearray

我知道这是一个noob问题,但仍然想到要求出于好奇心。 我有一个3字节的字节数组,例如[00,00,00]。每当我迭代一个方法时,我将最后一个增加0x02次。现在,一旦最后一个字节达到阈值FF,我需要将最后一个字节递增到+1,同时递增最后一个字节。例如,对于字节数组值[00,00,FF],使用0x02递增它应该变为[00,01,02],最后它应该达到[FF,FF,FF]应该是理想的方式,而不是使用正常如果条件。

3 个答案:

答案 0 :(得分:0)

您是否尝试使用for循环和if条件?

循环浏览元素。如果元素小于0xFF,则递增它,然后返回。否则,您将其设置为0x00,然后让for循环进一步循环。

的伪代码:

for element in array (in reverse order):
  if(element == 0xFF):
    element = 0
  else:
    element += 0x02
    return array

答案 1 :(得分:0)

你应该只使用一个变量

var i=0; // from 0 to 4096

//every time you can increment i++;

where you want result just convert i to array like :
function convert_array(val){
  var val2 = parseInt(val/4096, 16);
  var val1 = parseInt(val2/256, 16);
  var val0 = parseInt(val2%256, 16);
  return [val2 , val1, val0];
}


var result = convert_array(i); 

advanges:

  1. 增加数量没有问题只是i ++;
  2. 你没有循环(for):)

答案 2 :(得分:-1)

编辑 (转储嵌套循环)

对于更通用的方法(显然不是用颜色),你应该尝试这样的级联增量:

// non-destructive increment of the arr
// [0xFF, 0x00] -> [0x00, 0x02]
function incremented(arr) {
  var value, 
      index = 0,
      increment = 0x02,
      threshold = 0xFF, 
      re = [],
      flip = true;
  for (var i = 0; i < arr.length; i++) {
    value = arr[i];
    if (flip === false) {
      // don't touch, just add it
      re.push(value);
    } else if (value + increment > threshold) {
      // add zero value, but keep on flipping
      re.push(0);
    } else {
      // add incremented value
      re.push(value + increment);
    }
  }
  if (flip) {
    // if even the last number did not stop flipping add another
    re.push(increment);
  }
  return re;
}