Я делаю преобразование в шестнадцатеричную строку в довольно большом цикле, поэтому я попробовал несколько методов, чтобы найти самый быстрый. В результате я должен был получить строку фиксированной длины и правильно кодировать отрицательные значения (-1 => ff..f).
Простой .toString(16)
у меня не сработал, так как мне нужно было правильно кодировать отрицательные значения. Следующий код является самым быстрым из всех, что я тестировал на 1-2 байтовых значениях (обратите внимание, что symbols
определяет количество выходных символов, которые вы хотите получить, то есть для 4-байтового целого числа оно должно быть равно 8):
var hex = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
function getHexRepresentation(num, symbols) {
var result = '';
while (symbols--) {
result = hex[num & 0xF] + result;
num >>= 4;
}
return result;
}
Он работает быстрее, чем .toString(16)
для 1-2-байтовых чисел, и медленнее для больших чисел (когда symbols
> = 6), но все же должен превосходить методы, которые правильно кодируют отрицательные значения.