填充字符串时最合适的字符是什么(最好是0到127范围)?我希望/更喜欢它是非打印字符,并且没有与之关联的ascii symbol .
我试过NUL但这似乎意味着一个字符串的结尾(没有打印出来,因此名称"null terminator") . 似乎有一个PAD(128)字符,但我不确定它的具体用途,我必须手动将该范围的字符添加到我的font library . 添加完整(0-255)字符范围并不仅仅是一些额外的工作 .
Space (32)字符可以工作,但它不会占用任何空间 .
我在VHDL中这样做,因此可用的字符在ISO-8859-1 table中 . 您还可以在this document中查看字符类型(VHDL)
2 回答
如果使用固定长度类型
string(1 to LEN)
,我将建议填充字符串中的任何一个字符:NUL字符:
优点:可以对字符串函数进行"actual"内容的操作,即第一个NUL字符之前的任何内容 .
缺点:ModelSim不能很好地呈现字符串,因为它还显示了所有NUL字符 .
' '(空格):
优点:Nice ModelSim演示文稿 .
缺点:字符串操作必须检查最后的所有空格 .
因此,基于此,用于固定长度字符串的填充字符取决于字符串的使用方式 .
使用固定长度VHDL字符串类型(
string(1 to LEN)
)的替代方法是使用package
,在package
"textio"中声明为type line is access string;
. 然后,行是"pointer"到字符串,在VHDL中称为access
类型,并且引用的字符串只能以所需的长度创建,因此可以避免填充 . 问题:优点:
字符串长度可以动态确定,因此可变长度文本可以适合,甚至长测试 .
缺点:
模拟器,例如ModelSim,无法呈现
access
类型的内容,如'line'由于使用
access
类型的VHDL语言限制,为字符串/行操作制作函数/过程可能更复杂 .不支持合成'access'类型
对此的两点看法:
如果你坚持使用非打印角色,你可以选择多种角色 . 考虑一下BEL | 7 | CTRL-G . 它's non-printing. Rarely used anymore. It can be typed in the terminal and many editors (CTRL-G). If it does 2584506 accidentally (in a terminal, for example), it'无害 . 和乐趣 . 其他一切都相同,BEL很有趣 . ^ G ^ G ^ G :-)
使用您不使用的打印字符 . 这将使调试和字符串常量更容易 . 它确实需要在您的应用程序中限制打印字符 . 例如反斜杠,反推,波浪等
我倾向于选项2.你会看到你的垫字符一目了然,你将能够输入它们 . 如果源或数据在系统之间移动,则不需要特殊的字体或编辑器 .