У меня есть текстовый файл, содержащий много цветовых кодов RGB в десятичном формате. НапримерLinux/awk конвертировать файл, содержащий десятичный код в шестнадцатеричный
000,000,000
000,003,025
000,007,048
000,010,069
000,014,089
000,017,108
000,020,125
000,024,140
000,027,155
Я хотел бы преобразовать каждую строку в шестнадцатеричном формате (желательно выходной):
00,00,00
00,03,15
00,07,30
00,08,45
Я знаю, что могу использовать printf "%.2x,%.2x,%.2x\n" 000 010 69
однако printf "%.2x,%.2x,%.2x\n" 000 010 069
не работает, как 069 не конвертируемая.
Я думал awk
бы разумным инструментом для работы, но я думаю, я бы столкнуться с теми же проблемами преобразования десятичных знаков, например, 069 и т.д.
perl -le '$hex = sprintf("%.2x,%.2x,%.2x",005,69,255); print $hex'
также имеет тот же вопрос с 069
Обратите внимание, что «printf»% x \ n «010» еще более опасен, чем «printf»% x \ n «069», потому что он молча дает результат, который вы не ожидаете, а не выходите с ошибкой. Вы можете использовать «% 02x» для заполнения шестнадцатеричных чисел. Не уверен, что лучший способ интерпретировать числа, которые будут восьмеричными в C-стиле как десятичные. – svk
Может быть полезно: 'bc <<<" obase = 16; 069 "'. – Rubens