【发布时间】:2009-12-09 11:49:55
【问题描述】:
我认为这是不可能的,因为Int32 有 1 位符号和 31 位数字信息,而 Int16 有 1 位符号和 15 位数字信息,这导致有 2 位符号和 30 位信息.
如果这是真的,那么我不能将一个Int32 分成两个Int16。这是真的吗?
提前致谢。
额外信息:使用 Vb.Net,但我认为我可以毫无问题地翻译 C# 答案。
最初我想做的是将一个UInt32 转换为两个UInt16,因为这是用于与基于WORD 的机器交互的库。然后我意识到 Uint 不符合 CLS 并尝试对 Int32 和 Int16 做同样的事情。
更糟糕的是:执行a = CType(c And &HFFFF, Int16); 会引发OverflowException。我希望该语句与a = (Int16)(c & 0xffff); 相同(不会引发异常)。
【问题讨论】:
-
“将一个 int32 转换为两个 int16”。您的具体要求是什么?
-
“转换”在这里是绝对不正确的术语。 “分裂”可能吗?描述你想做什么。 (可以将 UInt32 拆分为两个 UInt16。)
-
谢谢,按要求添加了更多信息。
-
@SoMoS:我现在已经编辑了我的解决方案,它可以工作。哎呀:)