如何把一个十六进制字节转换为有符号整数?

sinat_25869705 2021-01-13 10:29:05
如题,Dim UBI_A1 As String = CShort("&H" & "E0") '16进制转10进制
得到是224,但是应该得到-32才是正确结果

请问大神怎么修改得到有符号的整数
...全文
2465 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
syw1990330 2021-06-15
  • 打赏
  • 举报
回复

直接减256不就好了

三楼の郎 2021-01-17
  • 打赏
  • 举报
回复
计算机基础知识原码、反码、补码了解一下。计算机里面存储的负数都是补码,即原来的数取反加1。&HE0是-32的补码并不是-32
sinat_25869705 2021-01-14
  • 打赏
  • 举报
回复
引用 4 楼 清晨曦月 的回复:
dim a as byte="&H" & "80" dim b as short="&H" & "8000" dim c as integer="&H" & "80000000" dim d as uint64="&H" & "8000000000000000" 也许能挑出来个把能行的
都不行....你是怎么验证
sinat_25869705 2021-01-14
  • 打赏
  • 举报
回复
引用 3 楼 yishumei 的回复:
[quote=引用 2 楼 sinat_25869705 的回复:] 但是2字节或更多字节用CShort是可以转换负数的,就是单字节不可以
CShort()转换之后的数据是双字节整数,强制转换单字节整数单字节前补&H00,转换后的数值永远是正数。 [/quote] Dim UBI_A1 As Short =VAL("&H" & "E0"),这样可以么
yishumei 2021-01-14
  • 打赏
  • 举报
回复
引用 5 楼 sinat_25869705 的回复:
[quote=引用 3 楼 yishumei 的回复:][quote=引用 2 楼 sinat_25869705 的回复:] 但是2字节或更多字节用CShort是可以转换负数的,就是单字节不可以
CShort()转换之后的数据是双字节整数,强制转换单字节整数单字节前补&H00,转换后的数值永远是正数。 [/quote] Dim UBI_A1 As Short =VAL("&H" & "E0"),这样可以么[/quote] Val()把("&H" & "E0")强制转换成Duble类型,也做不到
yishumei 2021-01-13
  • 打赏
  • 举报
回复
VB的单字节类型声明只有BYTE,但它是无符号的0~255;其他整数型是2字节或者更多字节,&HE0强制转换成其他整数型都不可能是负数。 单字节整数要想转换成负数需要做个是否大于&H7F的判断。 Dim UBI_A1 As Short = CShort("&H" & "E0") If UBI_A1 > &H7F Then UBI_A1 = UBI_A1 - &H100 End If
清晨曦月 元老 2021-01-13
  • 打赏
  • 举报
回复
dim a as byte="&H" & "80" dim b as short="&H" & "8000" dim c as integer="&H" & "80000000" dim d as uint64="&H" & "8000000000000000" 也许能挑出来个把能行的
yishumei 2021-01-13
  • 打赏
  • 举报
回复
引用 2 楼 sinat_25869705 的回复:
但是2字节或更多字节用CShort是可以转换负数的,就是单字节不可以
CShort()转换之后的数据是双字节整数,强制转换单字节整数单字节前补&H00,转换后的数值永远是正数。
sinat_25869705 2021-01-13
  • 打赏
  • 举报
回复
引用 1 楼 yishumei 的回复:
VB的单字节类型声明只有BYTE,但它是无符号的0~255;其他整数型是2字节或者更多字节,&HE0强制转换成其他整数型都不可能是负数。 单字节整数要想转换成负数需要做个是否大于&H7F的判断。 Dim UBI_A1 As Short = CShort("&H" & "E0") If UBI_A1 > &H7F Then UBI_A1 = UBI_A1 - &H100 End If
但是2字节或更多字节用CShort是可以转换负数的,就是单字节不可以

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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