两个16位的数字怎么变成32位整数

lzqnm159 2012-05-06 04:43:43
就像C语言中的union
其中一个16位数占32位的高16位,另外一个是低16位,
不是 int1 | int2 这种的
...全文
2825 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2012-05-07
  • 打赏
  • 举报
回复
a << 16 + b
=>
(a << 16) + b

仔细看了下,漏了一个括号。在a>32768的时候,符号位没有正确处理。

a * 65536 + b 则在任何情况下都是和你的一样的。
lzqnm159 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
你的方法和我说的有什么区别。
[/Quote]
你的是加,运行后的值是不一样的
yangchun1213 2012-05-06
  • 打赏
  • 举报
回复
一看就是怂人的贴
threenewbee 2012-05-06
  • 打赏
  • 举报
回复
你的方法和我说的有什么区别。
lzqnm159 2012-05-06
  • 打赏
  • 举报
回复 1
自己已解决
合并
Int32 inta=(int1<<16) | int2;
拆分
int int1=inta & (int)0xffff;
int int2=(inta>>16)| (int)0xffff;
lzqnm159 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
a * 65536 + b
[/Quote]
好像不对
我先贴C的代码
union inta{
struct{
short int int1;
short int int2;
}
int int3;
}
直接得到inta就是int1和int2的变换
如果在ASP.NET或者C#中 如何 输入int1和int2 直接的到inta
threenewbee 2012-05-06
  • 打赏
  • 举报
回复
或者 a << 16 + b
threenewbee 2012-05-06
  • 打赏
  • 举报
回复
a * 65536 + b

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧