Tom*_*oft 5 string integer type-conversion vhdl
我正在将文本数据加载到VHDL测试平台,我想将输入字符串转换为整数值.
例如:"123"=> 123
有人可以推荐一种在VHDL中将字符串转换为整数的"最佳"方法吗?
readline和read函数应该可以实现您的目标.
基本上:
代码片段:
library STD;
use std.textio.all;
...
variable File_Name : string;
file my_file : text;
variable lineptr : line;
variable temp : integer;
...
file_open(my_file, File_Name, read_mode); -- open the file
readline(my_file, lineptr); -- put the next line of the file into a buffer
read(lineptr, temp); -- "parse" the line buffer to an integer
-- temp now contains the integer from the line in the file
...
Run Code Online (Sandbox Code Playgroud)
为了参考。也可以使用'value属性将字符串转换为整数:
variable str : string := "1234";
variable int : integer;
...
int := integer'value(str);
Run Code Online (Sandbox Code Playgroud)
取决于一个人的需求,这可能比该read()过程更可取,因为它不会破坏性地更改源字符串。但是,仅当字符串是有效的整数文字且没有空格以外的其他空格时,它才起作用。
variable ln : line;
variable int : integer;
...
ln := new string'(" 456 "); -- Whitespace will be ignored
int := integer'value(ln.all); -- Doesn't consume contents of ln
ln := new string'("789_000 more text");
int := integer'value(ln.all); -- This will fail unlike read()
Run Code Online (Sandbox Code Playgroud)