,

Делим integer на три байта

» опубликован
» Способ реализации: cJass
» Тип: Алгоритм
Делим integer на три байта ! тоесть каждый от 0 до 255 с четвертым там могут быть проблемы со знаком, такчто пока лень проверять
cJass:
#define IntGetByte1(src) = (src / (256*256))
#define IntGetByte2(src) = (ModuloInteger(src, (256*256)) / 256)
#define IntGetByte3(src) = (ModuloInteger(src,256))
#define IntSetByte1(src,val) = { src = (ModuloInteger(src,(256*256)) + val*256*256 ) }
#define IntSetByte2(src,val) = { src = (ModuloInteger(src,256) + (src / (256*256))*256*256 + val*256) }
#define IntSetByte3(src,val) = { src = ((src / 256)*256 +val)}
позволяет хранить в 1 инте 3 коротких числа напр. цвет
P.S. спасибо Нетрату за это :) вобще тут не особо чего сложного на самом деле, но я забыл всю теорию)
пример:
int a = 0;

IntSetByte1(a, 86);
IntSetByte2(a, 99);

int b = IntGetByte1(a);
int c = IntGetByte2(a);

// b = 86, c = 99


Просмотров: 1 153

Msey #1 - 5 лет назад 0
самое оно для байтофагов)
ScorpioT1000 #3 - 5 лет назад 0
тут инт воспринимается как signed и там логика доставания старшего бита другая, мне лень с ней париться
Это сообщение удалено