首页 文章

最适合Pad Strings的字符

提问于
浏览
1

填充字符串时最合适的字符是什么(最好是0到127范围)?我希望/更喜欢它是非打印字符,并且没有与之关联的ascii symbol .

我试过NUL但这似乎意味着一个字符串的结尾(没有打印出来,因此名称"null terminator") . 似乎有一个PAD(128)字符,但我不确定它的具体用途,我必须手动将该范围的字符添加到我的font library . 添加完整(0-255)字符范围并不仅仅是一些额外的工作 .

Space (32)字符可以工作,但它不会占用任何空间 .

我在VHDL中这样做,因此可用的字符在ISO-8859-1 table中 . 您还可以在this document中查看字符类型(VHDL)

2 回答

  • 1

    如果使用固定长度类型 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'类型

  • 2

    对此的两点看法:

    • 如果你坚持使用非打印角色,你可以选择多种角色 . 考虑一下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.你会看到你的垫字符一目了然,你将能够输入它们 . 如果源或数据在系统之间移动,则不需要特殊的字体或编辑器 .

相关问题