![]() |
как перевести байты в int
Немного похоже на мою предыдущую тему.
У меня есть буфер. Код:
unsigned char textBuffer[] = { 0x1,0x1,0x1,0x1}Код:
|
нужно
*((int *)addr) где addr - указатель .... берет указатель типа char.... преобразует в его в указатель типа int и берет содержимое. небольшое.... уточнение по твоему коду (у тебя) (int )*addr .... берет адрес .... получает байт .... превращает его в инт. :cool: почуствуй разницу ;) |
>Я думаю, что должно быть пятнадцать а не единица. Как можно исправить код?
это еще почему |
он хотел сказать 257 :D
|
Кстати, Delimiter, может ты имел ввиду (int)(*buff)? Всё равно единица получается.
|
что я имел то я и ввел :D :p :)
|
Цитата:
|
в твоем массиве
для 2-х байтов имеем в шестнадцатиричном виде число 101=257 в десятиричной системе для четырех байтов (long) имеем число в шестнадцатирияном виде 1010101 в десятеричной системе 16843009 unsigned char textBuffer[] = { 0x1,0x1,0x1,0x1}; printf("%d",*((int *)textBuffer)); |
Да, кстати, ТС:
>> cout << "Converted: "<< (int)(*(buff + 3) >> 24 | *(buff + 2) >> 16 | *(buff + 1) >> 8 | *buff) << endl; когда ты пишешь (int) перед выражением, то к инту кастуется только непосредственная первая часть выражения. То есть: (type)( ........... ) + рекомендую объединять в скобки части выражения, участвующие в логических битовх операциях ? | ^ То есть писать лучше так (......) | (......) | (......) |
Код:
char buff[] = {0, 1, 2, 3}; |
| Время: 19:34 |