我期待将一种类型的数组转换为另一种类型 .
举个例子,假设我们有一个 byte 类型的数组,并且想要一个类型为 logic [5:0] 的新数组 .
byte
logic [5:0]
我没有尝试丢失数据时遇到困难 .
谢谢,
乔治
如果要将一种类型的数组转换为另一种类型的数组,如果它们具有完全相同的总位数,则可以通过比特流转换轻松实现 . 动态大小的数组需要调整大小以具有确切的位数 .
一个60字节的数组可以转换为80个6位的数组,因为它们都包含480位 .
typedef logic [7:0] array_8_60_t[60]; typedef logic [5:0] array_6_80_t[60]; array_8_60_t a1; array_6_80_t a2; ... a2 = array_6_80_t'(a1);
如果目标数组( a2 )具有比所需更多的位,或者您有一些特殊格式,则需要查看流操作符,或者恢复为 foreach 循环;
a2
foreach
可以使用强制转换( ' )操作转换数据类型 .
'
对于您的示例,您可以执行以下操作:
typedef byte byte_arr_t[]; byte_arr_t byte_arr; typedef logic logic_arr_t[5:0]; logic_arr_t logic_arr; logic_arr = logic_arr_t'(byte_arr);
记住你还必须知道数组及其元素的大小,否则数据可能会丢失 .
2 回答
如果要将一种类型的数组转换为另一种类型的数组,如果它们具有完全相同的总位数,则可以通过比特流转换轻松实现 . 动态大小的数组需要调整大小以具有确切的位数 .
一个60字节的数组可以转换为80个6位的数组,因为它们都包含480位 .
如果目标数组(
a2
)具有比所需更多的位,或者您有一些特殊格式,则需要查看流操作符,或者恢复为foreach
循环;可以使用强制转换(
'
)操作转换数据类型 .对于您的示例,您可以执行以下操作:
记住你还必须知道数组及其元素的大小,否则数据可能会丢失 .