这是将 8x8 数字块转换为字符串矩阵的函数:
function string float_block_to_string(input float_8x8_block_t float_block);
string str;
string fmt;
real value;
str = "";
// Loop over the array and write 8 values per line
for (int j=0; j<8; j++) begin
if (j==0)
str = "{\n";
for (int i=0; i<8; i++) begin
value = float_block[j*8+i];
str = {str, $sformatf("%8.4f ", value)};
end
if (j<7) begin
str = {str, "\n"};
end
if (j==7) begin
str = {str, " }; "};
// str = {str.substr(0, str.len()-3), " }; "};
end
end
return str;
endfunction
这是输出:
{
-43.4064 424.5029 0.0000 -149.0656 -0.0000 99.6025 0.0000 -84.4389
112.6610 383.1046 0.0000 -134.5284 -0.0000 89.8890 -0.0000 -76.2042
0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000
-39.5613 -134.5284 -0.0000 47.2401 0.0000 -31.5648 0.0000 26.7594
-0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000
26.4340 89.8890 0.0000 -31.5648 -0.0000 21.0909 0.0000 -17.8800
0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000
-22.4097 -76.2042 -0.0000 26.7594 0.0000 -17.8800 -0.0000 15.1580 }; FDCT_Cr 0V, 0H; 10, 0, 0, l=1
文字未对齐。尽管使用了格式字符串,但这还是如此。负数的减号是主要问题。解决这个问题的正确方法是什么?
%w.df
%
符号后面出现的
w数字是格式化相应参数的最小宽度。该数字包括符号和小数点的空间。小数点后的 d 数字是精度修饰符。对于您想要显示的数字,您的 w 需要至少为 9。