VB.NET 进制转换函数

sinat_25869705 2020-07-29 08:53:12
'进制转换(二进制、八进制、十进制和十六进制相互转换)
Function ConvertString(ByVal value As String, ByVal fromBase As Integer, ByVal toBase As Integer)
Dim intValue As Integer = Convert.ToInt32(value, fromBase)
Return Convert.ToString(intValue, toBase)
End Function

怎么样用十六进制转换得到正负进制,例如,我从网上找上面算法,FF01十六进制转换为十进制是65281,但是实际应该为-255,求高手告知有没有函数转换,一直想不明白
...全文
10419 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Alice_ZHR 2020-08-06
  • 打赏
  • 举报
回复
十六进制负数通常用原数的补码表示,补码为原数的反码+1,两个字节表示255为00FF,00FF的反码为FF00(反码为该数的二进制每一位取反,0000 0000 1111 1111每位取反为:1111 1111 0000 0000,即FF00),反码加1,则为FF01,所以-255即为FF01,如果用三个字节表示-255,则为FFFF01
清晨曦月 元老 2020-08-01
  • 打赏
  • 举报
回复
这个事吧,哪有神马正负进制。。。 据猜测,你描述的是想把十六进制转十进制。。。。。。。辣么,你这个FF01就不靠谱了,首先最高位是符号位,其次你用的是short吗。。。关于这个问题,有很多麻烦事在里面。。。 如果你想转化16进制到10进制,对于正数来说,可以直接用&H: Dim a As Integer = "&H" & "000000ff" 对于负数,自己判断一下,自己想吧,一位一位的写出来到低是几,是原码、反码还是补码,另外把空着的位用你的0占起来。有时候即使搭积木也需要用用脑子学点东西才能搭起来。
threenewbee 2020-08-01
  • 打赏
  • 举报
回复
x = 65281
if x > 32767 then x = x-65536
hztltgg 2020-07-29
  • 打赏
  • 举报
回复
先别想着代码这么写,ff01 实际为什么是-255? 进制转换单纯是个数学问题 编码才是计算机问题,不同计算机处理不同,编码有原码、反码、补码,负数用补码表示,要说清楚几位,而且FF01也没说清楚高位在前还是高位在后

16,554

社区成员

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

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