这里有两个类似的约束块,一个使用十进制表示法,另一个使用十六进制表示法。第一个按预期工作,但第二个仅在 5 个可用值中生成正值(包括 0):
-- positive and negative values generated as expected
var rnd_byte : int(bits: 8);
for i from 0 to 9 {
gen rnd_byte keeping {
soft it == select {
90 : [-1, -128 , 127, 1];
10 : 0x00;
};
};
print rnd_byte;
};
-- only positive values (including 0) generated!!!
var rnd_byte : int(bits: 8);
for i from 0 to 9 {
gen rnd_byte keeping {
soft it == select {
90 : [0xFF, 0x80, 0x7F, 0x01];
10 : 0x00;
};
};
print rnd_byte;
};
如何使第二个示例与第一个示例一样,但保留十六进制表示法。我不想写大的十进制数。