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,步驟如...