【发布时间】:2016-07-20 15:12:24
【问题描述】:
我有一个大数字表示为十六进制字符串。 我需要将它转换为缓冲区,并利用它。 然后,我需要将所述数字(现在是缓冲区)连续增加 1,并更多地使用它。
有没有办法简单地将 1 添加到缓冲区? 如果没有,通过从右到左递增数字来手动创建新缓冲区是否有意义?尝试使用第三方库添加到原始的十六进制字符串然后每次都重新转换是否更有意义?
谢谢!
【问题讨论】:
标签: javascript binary buffer
我有一个大数字表示为十六进制字符串。 我需要将它转换为缓冲区,并利用它。 然后,我需要将所述数字(现在是缓冲区)连续增加 1,并更多地使用它。
有没有办法简单地将 1 添加到缓冲区? 如果没有,通过从右到左递增数字来手动创建新缓冲区是否有意义?尝试使用第三方库添加到原始的十六进制字符串然后每次都重新转换是否更有意义?
谢谢!
【问题讨论】:
标签: javascript binary buffer
这些函数应该允许您增加缓冲区。你只需要选择是大端还是小端。
/**
* @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;
}
}
【讨论】: