作者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