我有一个用十六进制字符串表示的大数字。我需要将其转换为缓冲区,并加以利用。然后,我需要将所述数字(现在是一个缓冲区)连续增加1,并更多地利用它
有没有一种方法可以简单地将1添加到缓冲区中?如果不是,通过从右到左递增数字手动创建一个新的缓冲区有意义吗?尝试使用第三方库添加到原始十六进制字符串中,然后每次都重新转换它,这更有意义吗?
谢谢!
这些函数应该允许您增加缓冲区。你只需要选择你想要的是大endian还是小endian。
/**
* @summary increment a buffer in little endian
* @param buffer {Buffer} input buffer, will be modified
* @description
* Since 255 + 1 = 0 (mod 256), a "carry" is needed, if the
* element is 255 before incrementing
*/
function incrementLE (buffer) {
for (var i = 0; i < buffer.length; i++) {
if (buffer[i]++ !== 255) break;
}
}
/**
* @summary increment a buffer in big endian
*/
function incrementBE (buffer) {
for (var i = buffer.length - 1; i >= 0; i--) {
if (buffer[i]++ !== 255) break;
}
}