yah, 12.07.2006 - 23:52
QUOTE(Штуцер @ 12.07.2006 - 15:08)
Сама прога написана на С++
Может выложишь искходники, все-таки легче будет.
CraZy_JumPeR, 13.07.2006 - 2:35
В С++ есть битовые поля.
QUOTE
Элементы структуры или объединения могут быть определены как битовые поля шириной от 1 до 16 бит, знаковые или беззнаковые. Общая форма описания битового поля:
имя_типа имя_поля : ширина;
Допустимые типы битовых полей - int, char, unsigned int, unsigned char. Ширина битового поля - целое число от 0 до 16. Идентификатор поля может быть пропущен, в этом случае заданное число бит размещается в памяти, но будет недоступно. Для знаковых полей старший левый бит интерпретируется как знак. Над элементами битовых полей не может быть выполнена операция взятия адреса &.
Пример:
struct Date
{ unsigned int Day:5;
unsigned int Mon:4;
unsigned int Year:7;} Start ={1,9,98};
Другой вопрос, чё с ними делать.:) Обратиться к ним мне так и не удалось, сколько я ни пыхтел, хотя я далеко не высшая программистская инстанция. Может тебе и удастся.
Да и нужно это было для курсача, так что выход был таким:
CODE
unsigned char* DecToBin(int Dec, int k)
{
unsigned char* res;
res = new unsigned char[k];
for (int i = 0; i < k; i++) res[i] = 0;
int lg;
for (; Dec > 0; )
{
lg = (log(Dec)/log(2) + 0.000001);
res[k - lg - 1] = 1;
Dec -= pow(2,lg);
}
return res;
}
ZaHack, 13.07.2006 - 15:26
QUOTE(Штуцер @ 13.07.2006 - 15:18)
... Но все-таки, есть в С++функция, считывающая с порта 1 байт? ...
QUOTE
...Нужна функция, считывающая данные с порта в массив. И маленькая, но неприятная особенность - считывать нужно побитово, не побайтово.
Так тебе нужно побайтово или все-таки побитово??? Определись наконец!