string - 最适合填充字符串的字符

标签 string character special-characters padding vhdl

填充字符串时最合适使用的字符是什么(最好是 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 类型的限制,制作用于字符串/行操作的函数/过程可能会更加复杂。
    • 不支持“访问”类型的综合

关于string - 最适合填充字符串的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20621593/

相关文章:

string - 读取文本文件时将十六进制转换为整数

java - 如何分割下面的字符串

python - 在 Python 中将 boolean 表达式计算为字符串的更快方法

ascii - 是否存在与子弹大小相同但开放的字符?

PHP:如何判断一个字符串是否包含任何特殊字符?

c - 如何在c中将ssscanf与字符串矩阵一起使用

字符仅被视为无效

c++ - C++ 中的 Fork() 和 Execl(),Execl() 失败

javascript - (Javascript) 正则表达式特定字符但不包括

oracle - 如何删除以冒号开头的 oracle 用户(:)