Casting 如何在类型转换中将值从无符号short更改为无符号int

Casting 如何在类型转换中将值从无符号short更改为无符号int,casting,Casting,*pSelectData=4A,*(pSelectData+1)=54 无符号整数值=((无符号短)pSelectData) 输出=21578(十六进制0x544A) 有人能解释一下这是怎么发生的(值是如何转换的) 提前感谢具体问题是什么 根据端点的不同,您可以得到0x4a54或0x544a。这正是内存中的值的表示形式。这是内存,其中p=pSelectedData,ps=cast to short,pint=cast to int(假定为小端结构): 您可能想这样做: *(unsigned sh

*pSelectData=4A,*(pSelectData+1)=54

无符号整数值=((无符号短)pSelectData)

输出=21578(十六进制0x544A)

有人能解释一下这是怎么发生的(值是如何转换的)


提前感谢

具体问题是什么


根据端点的不同,您可以得到0x4a54或0x544a。这正是内存中的值的表示形式。

这是内存,其中p=pSelectedData,ps=cast to short,pint=cast to int(假定为小端结构):

您可能想这样做:

*(unsigned short*)pSelectedData = 0x4a;
*(unsigned short*)(pSelectedData+1) = 0x54;
那会给你什么

[  ][4A][00][54][00][  ]

我的指针有一个字节的数据。如果我将其强制转换为unsignedshort,它将获取两个字节的数据。在这种情况下,它应该是“4A54”。我将它存储在unsigned int中,值存储在544A中。为什么不4A54???@prathvi:我想你在这里遇到了持久性问题。根据硬件的不同,短消息的字节顺序不同。你的硬件平台是什么?谢谢你的回答。正如你所说,我对endianness本身感到困惑。
[  ][4A][00][54][00][  ]