[.NET] 關於16轉10進制 Val("&H" & Textbox1.t …

看板Visual_Basic作者 (.......................)時間15年前 (2009/04/17 17:33), 編輯推噓2(206)
留言8則, 2人參與, 最新討論串1/1
我用的是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

04/17 18:07, , 1F
integer 有 4Byte, 不到4Byte左邊自動補 1or0
04/17 18:07, 1F

04/17 18:07, , 2F
&H7FFF = &H00007FFFF (左邊是 0)
04/17 18:07, 2F

04/17 18:08, , 3F
&H8000 = &HFFFF8000 (左邊是1)
04/17 18:08, 3F

04/17 18:08, , 4F
&HFFFF = &HFFFFFFFF (左邊是1)
04/17 18:08, 4F

04/17 18:09, , 5F
&H10000 = &H00010000 (左邊是0)
04/17 18:09, 5F

04/17 18:11, , 6F
解決方法: Textbox1.Text左邊要pad滿0至Length==8
04/17 18:11, 6F
※ 編輯: Gnituynil 來自: 122.122.137.253 (04/17 18:23)

04/17 18:17, , 7F
然後左邊再加上"&H"
04/17 18:17, 7F

04/19 13:45, , 8F
左右都加"&"
04/19 13:45, 8F
文章代碼(AID): #19w4ppmF (Visual_Basic)