С++ Как перевести каждый из четырёх байт из переменной integer в четыре переменных char[1] ?

C++ Программирование Borland Integer Переменные

Например переменная:
int value = 262895;
Интегер состоит из четырёх байтов!
Как вытащить каждый байт например чтоб записать их содержимое в четыре переменных char и заметьте не бит а байт надо!
Киньте примеры или хоть намёки!!!

Примечание:
Ага забыл сказать!
Ещё подскажите как их потом обратно в интегер запихнуть!

Примечание:
>>>"эднианность целевой платформы"
Вообще первый раз такую фразу слышу!

Примечание:
Да кстати спасибо Harm что заметил!
Я имел ввиду беззнаковый интегер (unsigned int) а не простой (int)
Ну что ктонибудь скажет про то как же эти четыре чара (char) запихать обратно в б. интегер (unsigned int)???

Примечание:
Спасибо Harm щас буду проверять!!!

Примечание:
А тогда вопрос:
Можно ли как нибудь определить размер переменной int скока байт она занимает?

Примечание:
VVic я же по моему выразился в вопросе!
Мне не нужны побитовые операции!
Harm привёл классный пример я проверил всё работает!

Примечание:
И кстати:::
>>>"в этом вот форуме писать настоящую реализацию это, согласитесь, не очень осмысленно."
Во первых это не совсем форум!
Задал вопрос и получил достойный ответ!
Всё зашибись!
Тока вот как же всё таки определить!
Скока байт в переменной int на той системе на которой сейчас работает прога???

Примечание:
Спасибо Harm!
Всё пучком! (:-)))
Ответы:
char ch0 = (value >> 0) & 0xFF;
char ch1 = (value >> 8) & 0xFF;
char ch2 = (value >> 16) & 0xFF;
char ch3 = (value >> 24) & 0xFF;
unsigned int value = 262895;
char *chars = (char *)&value;
char char1 = chars[0];
char char2 = chars[1];
char char3 = chars[2];
char char4 = chars[3];
#include <stdio.h>
void main ( void) {
 int value = 262895;
 unsigned char *res = (char*)(&value);
 printf( "%d %d %d %d\n", res[0], res[1], res[2], res[3]);
 value = (res[3] << 24) | (res[2] << 16) | (res[1] << 8) | res[0];
 printf( "%d\n", value);
}
Обратно:
Все предложенные решения платформозависимы, так как порядок байт (big-endian, little-endian) может отличаться на разных платформах и размер int тоже (в стандарте чётко оговорен только размер типа char).
Кстати еще вариант:
Размер int:
cout<<sizeof(int);


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.