作者Gnituynil (.......................)
看板Visual_Basic
标题[.NET] 关於16转10进制 Val("&H" & Textbox1.text)
时间Fri Apr 17 17:33:36 2009
我用的是Visual studio 2005的VB
我要的功能是输入一个16进制的数字 转换成10进制输出
我找到的方法是Textbox2.text = Val("&H" & Textbox1.text)
一开始用的很顺没出现什麽问题
但是後来我发现 有些数字转换出来会变成负数
测试之後发现 输入 7FFF 输出是 32767
输入 8000 输出是 -32768
输入 FFFF 输出是 -1
输入10000 输出是 65536
为什麽中间有范围会变负数
是因为这个函数支援位元数有限吗?
有什麽瓣法改善吗? 或是有其他更好用的内建函数?
难道只能额外自己写副程式了吗??
--------------------------------------------------------------------------
谢谢回覆的大大!
除了下面回覆的方法以外
我刚刚也发现一个方法好像也可以解决这个问题
把 Textbox2.text = Val("&H" & Textbox1.text)
改成Textbox2.text = Val(Str("&H" & Textbox1.text))
先转成字串 再转回数值 这样好像也不会有问题!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.122.137.253
1F:推 evernever:integer 有 4Byte, 不到4Byte左边自动补 1or0 04/17 18:07
2F:→ evernever:&H7FFF = &H00007FFFF (左边是 0) 04/17 18:07
3F:→ evernever:&H8000 = &HFFFF8000 (左边是1) 04/17 18:08
4F:→ evernever:&HFFFF = &HFFFFFFFF (左边是1) 04/17 18:08
5F:→ evernever:&H10000 = &H00010000 (左边是0) 04/17 18:09
6F:→ evernever:解决方法: Textbox1.Text左边要pad满0至Length==8 04/17 18:11
※ 编辑: Gnituynil 来自: 122.122.137.253 (04/17 18:23)
7F:→ evernever:然後左边再加上"&H" 04/17 18:17
8F:推 fumizuki:左右都加"&" 04/19 13:45