【问题标题】:How can I do a bitwise-AND operation in VB.NET?如何在 VB.NET 中进行按位与运算?
【发布时间】:2010-10-28 19:23:37
【问题描述】:

我想在 VB.NET 中执行按位与运算,获取一个 Short(16 位)变量并将其与“0000000011111111”进行与运算(从而仅保留最低有效字节/8 个最低有效位)。

我该怎么做?

【问题讨论】:

  • 你是在做字符串连接还是IF条件?
  • 你能给出你尝试的伪代码吗?
  • dim a as short ..... dim b as byte = doing and with a.

标签: vb.net boolean bitwise-operators


【解决方案1】:

0000000011111111 表示为 VB 十六进制文字是 &HFF(或 &H00FF,如果你想明确表示),普通的 AND 运算符 is actually a bitwise operator。所以要屏蔽掉 Short 你要写的最高字节:

shortVal = shortVal AND &HFF

有关将二进制常量导入 VB 的更多创意方法,请参阅:VB.NET Assigning a binary constant

【讨论】:

  • 我可以用 &H00FF... &HFF 和 &H00ff 有什么区别
  • @Barun:前面的 0 是多余的。如果你愿意,可以使用它们......这没有区别。
【解决方案2】:

使用And 运算符,并将文字写成十六进制(易于从二进制转换):

theShort = theShort And &h00ff

如果您实际上想要做的是将short 分成字节,那么a built in method 就是:

Dim bytes As Byte() = BitConverter.GetBytes(theShort)

现在你有了一个包含两个字节的数组。

【讨论】:

    【解决方案3】:
    result = YourVar AND cshort('0000000011111111')
    

    【讨论】:

    • 字符串用引号而不是撇号分隔。 CShort 函数不假定二进制为基数,而是十进制,因此尝试转换该字符串会导致溢出。
    猜你喜欢
    • 1970-01-01
    • 2020-09-15
    • 2023-03-25
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    相关资源
    最近更新 更多