У меня есть двухбайтовый короткий указатель int short int* hostdata
и вы хотите преобразовать его в 4-байтовый беззнаковый int с сетевым порядком байтов unsigned int* net_data
. Это нормально, если я пишу это так:short int to unsigned int by byte order by C++
for(int i = 0; i < numsamples; ++i)
net_data[i] = htonl((unsigned int)hostdata[i]);
или я должен делать это с reinterpret_cast как:
for(int i = 0; i < numsamples; ++i)
net_data[i] = htonl(reinterpret_cast<unsigned int *>(reinterpret_cast<short int*>hostdata[i]));
Ваши 2 примера кода, похоже, не эквивалентны мне, поскольку вы применяете указатели в вашем примере секунд без разыменования - предназначено? Кроме того, какое преобразование вы хотите достичь? short int может иметь отрицательные числа, unsigned int не может - вы предпочли бы нижнее течение в этом случае? усечение? переосмысление? – griffin
Что вы хотите делать с отрицательными значениями? –
У вас есть массив указателей, 'short int * hostdata [SIZE]' или массив чисел 'short int hostdata [SIZE]'? Если последнее, что вы хотите делать с отрицательными цифрами? – Joni