Я хочу поместить 32-битное значение в unsigned int. Я хочу, чтобы эта программа запускалась на платформах с 32 и 64 бит int тоже и с маленькими и большими концами. Вот мой код32 бит в преобразование unit64 в C++
void uCHarToInt(unsigned char* input, unsigned int* oputput)
{
memcpy(oputput, reinterpret_cast<unsigned int*>(&input), 4);
if (sizeof(unsigned int) == 8)
{
*oputput >>= 32;
}
}
Я думаю, что это будет работать с большим endnian и с 32 и 64-битных целочисленных типов, но я не уверен, что мало Endian и как тетсру ведут себя на разных платформах. Разве нет лучшего решения?
Почему вы думаете вам нужен реинтерпрет? Почему бы вам просто не использовать 'uint32_t', который, как гарантируется, будет иметь нужный размер? –
Я использовал несколько старых кодов и ID, чтобы посоветовать использовать этот актер. И у меня есть функции, которые возвращают unsigned ints, но, похоже, лучше их изменить ... так что это будет работать на всех платформах да? void uCHarToInt (unsigned char * input, uint32_t * oputput) { \t memcpy (oputput, input, 4); } –
Забудьте о коде. Опишите, чего вы хотите достичь, без каких-либо упоминаний о том, как вы пытаетесь его достичь. Потому что, очевидно, код странный, если не сказать больше. – gnasher729