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