如下代码:
Sub Main()
dim b as uinteger
dim a as integer
b=&h84250000 'b为带符号整型,此时b为负数
'a=b '如果这样赋值,VB并不会对b进行截取然后赋值给a,而会报溢出错误
b=(b>>16) And &hffff '正确的做法是右移2个字节,并清空高2字节,然后再向a赋值
a=b
Console.WriteLine("Hex: {0:x}",a<<16>>16) '如果希望赋值后a为带符号,
'应该进行a<<16>>16的操作,此时打印结果为 “Hex: ffff8425”
Console.WriteLine("Hex: {0:x}",a) '如果希望赋值后a为无符号,可直接使用,
'此时打印结果为 “Hex: 8425”
End Sub
通过 “a<<16>>16”的操作,保留了b的符号位。
参考自博客:https://blog.youkuaiyun.com/weixin_30590285/article/details/97021101