Форум программистов, компьютерный форум CyberForum.ru

Надо указателю на long int присвоить значение указателя на char - C++

Восстановить пароль Регистрация
 
nefton
44 / 20 / 5
Регистрация: 28.02.2013
Сообщений: 184
20.03.2013, 13:04     Надо указателю на long int присвоить значение указателя на char #1
C++
1
2
3
4
5
6
7
8
9
//есть указатель 
unsigned char* p_to_char = somthing;
 
//и указатель 
unsigned long int* p_to_int;
 
//надо p_to_int присвоить значение p_to_char;
 
p_to_int = p_to_char
Компилятор пишет ошибку и что неможет никак. Справедливо, но надо.
Физически то это без проблем.

У меня есть массив в памяти (картинка RGB+A). И есть указатель на её начало типа char*
Тоесть пиксель представляет собой 4 байта последовательно в памяти.
Мне надо проверить является ли пиксель таким то. Притом надо это быстро.

Толи мне проверять каждый байт отдельно и применять сложную логическую конструкцию И к 4м байтам.
Толи у меня будет число 4 байта и я применю к нему просто XOR
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
20.03.2013, 13:06     Надо указателю на long int присвоить значение указателя на char #2
C++
1
reinterpret_cast<unsigned long int*>(p_to_char)
Учи матчасть.
P.S. Если работаешь непосредственно с байтами, лучше использовать типы, определенные в cstdint и гарантирующие заданный размер, в твоем случае uint8_t и uint32_t.
Никто не гарантирует, что unsigned long int будет 4 байта, а не 8.
nefton
44 / 20 / 5
Регистрация: 28.02.2013
Сообщений: 184
20.03.2013, 13:13  [ТС]     Надо указателю на long int присвоить значение указателя на char #3
О господи, в С и такое есть Спасибо.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
20.03.2013, 13:23     Надо указателю на long int присвоить значение указателя на char #4
Цитата Сообщение от nefton Посмотреть сообщение
О господи, в С и такое есть
Возможно удивлю, но в С такого нет
qaz0
0 / 0 / 0
Регистрация: 27.02.2013
Сообщений: 8
20.03.2013, 13:28     Надо указателю на long int присвоить значение указателя на char #5
Еще вариант для рассмотрения :
C++
1
2
3
4
5
union VSunion
{
    unsigned long int VSint;
    unsigned char VSchar[sizeof(unsigned long int)];
};
Вдруг подойдет


Кстати, на замечание о размерности int и использовании uint32_t на самом деле следует обратить внимание.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
20.03.2013, 13:35     Надо указателю на long int присвоить значение указателя на char #6
В C обычный каст (uint32_t*)p_to_char, но мы то в разделе C++.
Yandex
Объявления
20.03.2013, 13:35     Надо указателю на long int присвоить значение указателя на char
Ответ Создать тему
Опции темы

Текущее время: 17:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru