Я получаю значение int
foo
в функции, из которой мне нужно создать std :: vector из unsigned char
. Размер вектора не должен быть больше необходимого. Это означает, что только если foo > 255
размер вектора может быть равен 2. Если foo > 0xFF
размер вектора может быть 3, и если foo > 0xFFFFFF
, вектор должен иметь размер 4. Я, похоже, не могу обернуть голову вокруг получения правый размер вектора в зависимости от размера int foo
, а затем доступ к правильным байтам int
до push_back
на вектор. Любая помощь приветствуется! Благодаря!Копирование одиночных байтов целочисленного значения в вектор беззнаковых символов
Это то, что я до сих пор:
size_t foo2= foo;
size_t bytes = 0;
while (foo2!= 0)
{
foo2/= (1u << CHAR_BIT);
bytes++;
}
std::vector<unsigned char> myVec(bytes);
for (size_t i = 0; i < bytes; i++)
myVec[bytes-1-i]=(*((char*)&foo+ i));
Иногда примеры кода сообщаются лучше ... – WhiZTiM
Есть ли у вас какое-либо особое требование к подлинности? Начиная с младшего байта и используя 'push_back', будет, например, сделать ваш вектор мало-endian. – Useless