VB程式。將十進位制數分別轉換成二,八,十六進位制數

2021-03-25 05:34:03 字數 6282 閱讀 6342

1樓:匿名使用者

'vb程式。將一個十進位制

數分別轉換成二,八,十六進位制數。

private sub text1_change()'tonkeys ** 58507961

'十進位制  to 二進位制

a% = val(text1.text)

tmp = ""

dotmp = (a mod 2) & tmpif a < 2 then exit doa = a \ 2

loop

text2.text = tmp

'十進位制  to 八進位制

a% = val(text1.text)

tmp = ""

dotmp = (a mod 8) & tmpif a < 8 then exit doa = a \ 8

loop

text3.text = tmp

'十進位制  to 十六進位制

a% = val(text1.text)

text4.text = hex(a)

end sub

編寫vb程式 編寫sub過程 把任意一個十進位制數n分別轉換成二進位制八進位制十六進位制表示的數

2樓:匿名使用者

設計介面

:**:

private sub ***mand1_click()

dim integerpart as long, decimalpart as double

dim carry(), charactercode(15) as string

carry = array(2, 8, 16)

integerpart = int(val(text1.text))

decimalpart = val(text1.text) - int(val(text1.text))

for i = lbound(charactercode) to ubound(charactercode)

select case i

case 0 to 9

charactercode(i) = chr(48 + i)

case else

charactercode(i) = chr(55 + i)

end select

next i

for i = lbound(carry) to ubound(carry)

label2(i) = transformation(carry(i), charactercode, integerpart, decimalpart)

next i

end sub

private function transformation(byval carrysystem as integer, byref charactercode() as string, byval integerpart as long, byval decimalpart as double) as string

dim r as integer, strintegerpart as string, q as integer, strdecimalpart as string

dor = integerpart mod carrysystem

integerpart = integerpart \ carrysystem

strintegerpart = charactercode(r) + strintegerpart

loop until integerpart = 0

doq = int(decimalpart * carrysystem)

decimalpart = decimalpart * carrysystem - q

strdecimalpart = strdecimalpart + charactercode(q)

loop until decimalpart = 0

transformation = strintegerpart + "." + strdecimalpart

end function

執行介面:

vb編寫程式,利用sub過程實現將任意一個十進位制數n分別轉換成2進位制、8進位制和16進位制數。 要求

3樓:聽不清啊

private sub ***mand1_click()a = cint(text1.text)

s = ""

dec2n a, 2, s

print a; "=("; s; ")2"

dec2n a, 8, s

print a; "=("; s; ")8"

dec2n a, 16, s

print a; "=("; s; ")16"

end sub

sub dec2n(byval a, r, s)s = ""

while a > 0

x = a mod r

if x < 10 then s = x & s else s = chr(55 + x) & s

a = a \ r

wend

end sub

4樓:匿名使用者

這個大部分都做好了

你需要的話 可以幫你做

vb程式設計序實現一個十進位制數轉換成2、8、16進位制數。

5樓:匿名使用者

轉換成十六進位制 hex()

如:10(十進位制):hex(10)=a

轉換成8進位制oct()

如:10(十進位制):oct(10)=12

轉換成2進位制,使用下面的方法

'採用連除2取餘數,將一個十進位制數轉換為二進位制數dim dec as integer '輸入一個十進位制數dim bin as string '轉換為二進位制表示dim res as integer

dim i as integer

dec = val(inputbox("x="))form1.print "十進位制數:"; decdores = dec mod 2 '求出除以2的餘數bin = res & bin

dec = dec \ 2

loop while dec <> 0

form1.print "轉換為二進位制數為:"; bin

6樓:匿名使用者

十六進位制:hex(number)或使用&h字首

八進位制:oct(number)或使用&o字首

二、八、十六進位制轉為十進位制:

引數sdate為要進行轉換的數,stype為此數的型別。

如要將十六進位制的"7b"轉為十進位制: msgbox othertoshi("7b",16)

private function othertoshi(byval sdate as string, byval stype as long) as string

dim a as string, k as long, p as long

if trim(sdate)="" then msgbox "請輸入要轉換的數!" :exit function

on error goto exitsub

p = len(sdate)

select case stype

case 2

for k = 1 to p

if mid(sdate, k, 1) > 1 then goto exitsub

next

case 8

if isnumeric(sdate) = false then goto exitsub

sdate = round(sdate)

p=len(sdate)

case 16

for k = 1 to p

a = asc(lcase(mid(sdate, k, 1)))

if a < 48 or (a > 49 and a < 97) or a > 102 then goto exitsub

next

case else '按你說的操作,此句好象可免

msgbox "指定轉換的型別不正確,請重新輸入!": exit function

end select

k = 0

do while k < p

k = k + 1

a = mid(sdate, k, 1)

if stype = 16 then

select case lcase(a)

case "a"

a = "10"

case "b"

a = "11"

case "c"

a = "12"

case "d"

a = "13"

case "e"

a = "14"

case "f"

a = "15"

end select

end if

othertoshi = ltrim(str(val(othertoshi) + val(a) * stype ^ (p - k)))

loop

exit function

exitsub:

msgbox "要轉化為" & stype & "進位制的資料不合法,請重新輸入!"

end function

'十進位制轉為

二、八、十六進位制:

'用法與上類似

private function ****oother(byval sdate as string, byval stype as long) as string

dim s as string

if trim(sdate)="" then msgbox "請輸入要轉換的數!" :exit function

if isnumeric(sdate) = false then goto exitsub'要轉換的物件非數值型,跳出不執行

on error goto exitsub

sdate = round(val(sdate)) '進行四捨五入

do while sdate > 0

s = ltrim(str(sdate mod stype))

if stype = 16 then

select case s

case "10"

s = "a"

case "11"

s = "b"

case "12"

s = "c"

case "13"

s = "d"

case "14"

s = "e"

case "15"

s = "f"

end select

end if

****oother = s & ****oother

sdate = sdate \ stype

loop

exit function

exitsub:

msgbox "要轉換的資料非十進位制資料,請重新輸入"

end function

沒怎麼除錯,你自己再仔細除錯一下吧。

編寫vb程式 編寫sub過程 把任意一個十進位制數n分別轉換成二進位制八進位制十六進位制表示的數

7樓:匿名使用者

private function dectopoint(value as long, flag as long) as string

dim c as long

dim r as long

c = value if flag = 16 then

dectopoint = hex(c)

exit function

end if

dim s as string

dor = c mod flag

c = int(c / flag)

s = s & cstr(r)

loop until c < flag

s = s & cstr(c)

dectopoint = strreverse(s)

end functionprivate sub form_load()

dim value as long

value = 123

msgbox "value的二進位制

: " & dectopoint(value, 2)

msgbox "value的八進位制: " & dectopoint(value, 8)

msgbox "value的十六進位制: " & dectopoint(value, 16)

end sub

excel度分秒轉換成十進位制,怎麼將excel表格中的經緯度度分秒轉換成十進位制

1 首先開啟excel輸入下圖資料,其中度分秒符號可以通過面板上插入 符號 單位符號,分別插入度分秒符號。2 點選進入下圖的那個單元格,編輯狀態,選中單元格內文字然後複製,注意不是複製這個單元格。3 選中十進位制度選擇列,然後右鍵 設定單元格格式 數字 自定義 在型別處貼上,如圖。4 下面修改貼上的...

16進位制 怎麼表示??可以轉換成十進位制嗎?怎麼轉換

16進位制的簡寫表示形式為hex或下標16,如 39 16 十六進位制是可以轉換為十進位制的。具體的轉換方式是 把十六進位制數按位權形式,多項式和的形式,求其最後的和,就是其對應的十進位制數。簡稱 按權求和 具體的轉化方法如下圖 16進位制就是逢16進1,但我們只有0 9這十個數字,所以我們用a,b...

十進位制100轉換成二進位制八進位制十六進位制寫出步驟

1 100轉換成二進位制為1100100,步驟如下 1 將100按照2的加權項。2 從右向左填充二進位制數字。2 100轉換成八進位制為144,步驟如下 1 100的二進位制結果 1100100 從右向左每三個數字分為一組。2 將每組的結果分別轉換為八進位制。3 100轉換成十六進位制為64,步驟如...