【发布时间】:2025-12-22 02:15:07
【问题描述】:
我有一个两字节短整型指针数组short int* hostdata,并希望将其转换为网络字节顺序为unsigned int* net_data 的四字节无符号整型。我这样写可以吗:
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 不能 - 在这种情况下你会更喜欢下溢吗?截断?重新诠释?
-
你想对负值做什么?
-
您有指针数组
short int *hostdata[SIZE],还是数字数组short int hostdata[SIZE]?如果是后者,你想用负数做什么? -
@Joni 根据他的编辑,他没有 - 只是一个指向 short int 的指针(指针和数组不相同)
-
@griffin "short int pointer array" 听起来仍然很像指向
short int的指针数组。第二个示例仍然将数组值解释为指针。
标签: c++ networking byte unsigned short