- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
function IntToHex(N: integer): string;
const
S = '0123456789ABCDEF';
var
i: integer;
begin
SetLength(Result, 8);
for i := 0 to 7 do Result[8 - i] := S[N shr (i shl 2) and $0F + 1];
end;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+67
function IntToHex(N: integer): string;
const
S = '0123456789ABCDEF';
var
i: integer;
begin
SetLength(Result, 8);
for i := 0 to 7 do Result[8 - i] := S[N shr (i shl 2) and $0F + 1];
end;
Носки менял, ноги мыл, все равно воняет хаккирством.
И оно почему-то в модуле WinAPI.pas у Тараса лежит о_О
i shl 2 - это умножение на 4.
and $0F - сохраняет последние 4 бита , остальные обнуляет.
В результате в цикле мы двигаем окно в 4 бита, которое используем как индекс в строке. Хотя я бы таки использовал массив [0..15], чтобы не делать "+1". И, возможно, не стоит заботится о сохранности значения N, и делать ему каждый раз shr 4, но это уже надо смотреть асмовый код :)
А так, да, никакого хаккирства нет.
А конкатенация - явно не быстрее, чем битовый сдвиг.
Ты знаешь значение этого слова?
Клон Crimsonland
Chr-редактор
У меня совершенно странный вопрос. Клон Crimsonland в млаженчестве случайно не "Dekanat" (или вроде) назывался, и не из лабы ли вырос?
http://govnokod.ru/11225#comment142886
Ставлю на Капитана Очевидность, потому что Капитан Тавтология ошибётся, подумав, что моё имя "ТарасБ".
Бельбас причем реальная фамилия.
Реальное: Березняк Тарас Валерьевич
Напишу на tarasber собако mail.ru
А в качестве валидации, что это я - прикло какой-нибудь набор букв в ответ, я ту т их выложу
набор букв следующий: ко
Валидация пройдена? )
Бенчмарки на ideone это круто.
http://govnokod.ru/12137#comment161471