填充字符串时最合适使用的字符是什么(最好是 0 到 127 范围)?我希望/更喜欢它是非打印字符并且没有 ascii symbol与之相关。
我试过NUL
但这似乎表示字符串的结束(后面不打印任何内容,因此名称为“空终止符”)。好像有一个PAD
(128) 个字符,但我不确定它的具体用途,我必须手动将该字符范围添加到我的 font library 中。添加完整的(0-255)字符范围并不是世界末日,只是一些额外的工作。
Space (32)角色会起作用,但当有这么多特殊角色时,这似乎不是最佳实践。可能是一个不占用任何空间的字符。
我在 VHDL 中执行此操作,因此可用的字符位于 ISO-8859-1 table 中。您还可以查看 this document 中的字符类型(VHDL)
最佳答案
如果使用固定长度类型string(1 to LEN)
,我会建议使用以下任一字符来填充字符串:
- NUL 字符:
- 优点:可以使字符串函数对“实际”内容(即第一个 NUL 字符之前的任何内容)执行操作。
- 缺点:ModelSim 不能很好地显示字符串,因为它还显示所有 NUL 字符。
- ' '(空格):
- 优点:出色的 ModelSim 演示。
- 缺点:字符串操作必须检查末尾是否有空格。
因此基于此,用于固定长度字符串的填充字符取决于字符串的使用方式。
使用固定长度 VHDL 字符串类型 (string(1 to LEN)
) 的替代方法是使用 line
类型,在 package
中声明> “textio”作为类型行是访问字符串;
。 Line 是一个指向字符串的“指针”,在 VHDL 中称为access
类型,并且引用的字符串可以只创建所需的长度,因此可以避免填充。问题:
- 优点:
- 字符串长度可以动态确定,因此可以容纳可变长度的文本,甚至是长测试。
- 缺点:
- 模拟器(例如 ModelSim)无法呈现“line”等
access
类型的内容 - 由于 VHDL 语言对使用
access
类型的限制,制作用于字符串/行操作的函数/过程可能会更加复杂。 - 不支持“访问”类型的综合
- 模拟器(例如 ModelSim)无法呈现“line”等
关于string - 最适合填充字符串的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20621593/