Есть ли способ преобразовать целое число, чтобы всегда быть четырехзначным шестнадцатеричным числом, используя Lua - PullRequest
2 голосов
/ 13 мая 2019

Я создаю скрипт Lua, который будет вычислять значение температуры, а затем форматировать это значение как шестнадцатеричное число из 4 цифр, которое всегда должно быть 4 цифрами.Хорошо иметь ответ в виде строки.

Ранее в CI можно было использовать

data_hex=string.format('%h04x', -21)

, что возвращало бы ffeb

, однако форматировщик строки hнедоступно для меня в Lua, опускание «h» не учитывает отрицательные ответы, т.е.

data_hex=string.format('%04x', -21)

print(data_hex)

, который возвращает ffffffeb

data_hex=string.format('%04x', 21)

print(data_hex)

, который возвращает 0015

Isесть удобный и переносимый эквивалент формататора строк 'h'?

1 Ответ

1 голос
/ 14 мая 2019

Я предлагаю вам попробовать использовать побитовое И для усечения любых начальных шестнадцатеричных цифр для печатаемого значения.

Если у вас есть переменная temp, которую вы собираетесь печатать, вы должны использовать что-то вроде data_hex=string.format("%04x",temp & 0xffff), который удаляет первые шестнадцатеричные цифры, оставляя только 4 младшие шестнадцатеричные цифры.

Мне нравится этот подход, поскольку меньше манипуляций со строками, и он соответствует фактическому типу данных 16-разрядного числа со знаком.Вопрос о том, является ли уменьшение числа манипуляций строкой, зависит от скорости опроса температуры.

Для получения дополнительной информации о функции format см. Статья библиотеки строк .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...