Вот два похожих блока ограничений, один из которых записан с использованием десятичной записи, а другой - с использованием шестнадцатеричной записи. Первое работает как положено, но второе генерирует только положительные значения (включая 0) из 5 доступных значений:
-- 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;
};
Как заставить второй пример вести себя как первый, но сохранить шестнадцатеричное обозначение. Я не хочу писать большие десятичные числа.