lua - 有没有办法使用 Lua 将整数转换为始终为 4 位十六进制数
问题描述
我正在创建一个 Lua 脚本,它将计算温度值,然后将此值格式化为 4 位十六进制数字,该数字必须始终为 4 位。将答案作为字符串很好。
以前在CI中已经可以使用了
data_hex=string.format('%h04x', -21)
这将返回 ffeb
但是,在 Lua 中,我无法使用 'h' 字符串格式化程序删除 'h' 并不能满足否定答案,即
data_hex=string.format('%04x', -21)
print(data_hex)
返回 ffffffeb
data_hex=string.format('%04x', 21)
print(data_hex)
返回 0015
是否有与“h”字符串格式化程序等效的方便且可移植的方法?
解决方案
我建议您尝试使用按位与来截断正在打印的值的任何前导十六进制数字。
如果您有一个temp
要打印的变量,那么您将使用类似的东西data_hex=string.format("%04x",temp & 0xffff)
来删除前导十六进制数字,只留下最不重要的 4 个十六进制数字。
我喜欢这种方法,因为字符串操作较少,并且与有符号 16 位数字的实际数据类型一致。是否需要考虑减少字符串操作将取决于轮询温度的速率。
有关该format
函数的更多信息,请参阅字符串库文章。
推荐阅读
- android-studio - 无法在离线模式下为 android studio 设置 gradle
- html - HTML 表单将输入连接到一个字段中(使用 GET)
- python - Flask - jinja2 从过滤结果中访问数据
- string - 如何查找给定字符串中最短唯一子串的长度和相同长度的所有唯一子串的出现次数
- machine-learning - 准备 MFCC 音频功能 - 所有 WAV 文件的长度都应该相同吗?
- python - 在 python 中创建 removeNode() 方法以删除链表中给定键的所有出现
- c - C语言中的OpenGL添加另一个对象
- kubernetes - kubenetes 主机中的 kube proxy servcie 意外死机
- c# - 检查 SQL 查询是否返回 null
- javascript - 快速会话在 mongo 和 node 中不起作用