如何在Scriban中实现字符串与十六进制值的格式化
解决Scriban模板格式化字符串与十六进制数值的问题
正确的模板写法
你可以用两种方式实现需求,其中第二种更贴近你之前Jinja2的使用习惯:
方法1:使用string.format函数
uint16_t {{ string.format "%25s" device.name }} = {{ string.format "0x%08X" device.address }};
方法2:使用%插值操作符
uint16_t {{ "%25s" % device.name }} = {{ "0x%08X" % device.address }};
错误原因说明
你之前的写法误用了Scriban的函数:
object.format并非Scriban标准函数,不存在该用法;math.format是用于数学表达式输出格式化的,不适合处理十六进制数值的格式化需求。
效果验证
当device.name为"RNG"、device.address为0x50060800时,上述模板会输出你期望的结果:
uint16_t RNG = 0x50060800;
内容的提问来源于stack exchange,提问作者El-Zinkii
相关产品推荐
相关产品推荐

