 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
gunsu77
註冊時間: 2007-03-09 文章: 22
第 1 樓
|
發表於: 星期三 四月 11, 2007 11:18 pm 文章主題: 轉換問題 |
|
|
請問一下 我要怎麼把字串72進位轉成10進位數字
阿要怎麼把10進位數字轉成72進位字串呢
可以寫個範例給我看嗎? 或教我怎麼用? 感謝大家 |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 2 樓
|
|
回頂端 |
|
 |
gunsu77
註冊時間: 2007-03-09 文章: 22
第 3 樓
|
發表於: 星期四 四月 12, 2007 12:51 am 文章主題: |
|
|
好像很複雜....我很笨..可以說簡單一點的嗎@@ |
|
回頂端 |
|
 |
小桑•無痕

註冊時間: 2003-07-08 文章: 304 來自: Tainan, Taiwan
第 4 樓
|
發表於: 星期五 四月 13, 2007 8:47 am 文章主題: |
|
|
方法跟換成16進位一樣
只是把16換成72.....ㄏㄏ _________________ 用力 Try 一下...可以發現很多好玩的事.... |
|
回頂端 |
|
 |
gunsu77
註冊時間: 2007-03-09 文章: 22
第 5 樓
|
發表於: 星期五 四月 13, 2007 2:25 pm 文章主題: |
|
|
我不是不想試...是因為我不知道36進位跟72進位是怎麼出來的...要怎麼換算...
我這裡有36進位轉10跟10轉36的範例
有一些我不懂 我想請教你們...並不是我不想自己摸索...是真的我不懂,
裡面有If nTemp<=47 .or. nTemp > Asc("z")
nTemp=nTemp-48
這2個是啥麼意思? 可以跟我解說嗎?為啥要減掉48
&& 將10進位轉成36進位
Function nToc36
Para nNum,nLen
cStr=""
nTemp=0
i=0
nLen=3
cStr= Replicate("0",nLen)
If nNum< 0 .or. nNum >=36 ^nLen
Return Replicate("*",nLen)
Endif
For i=nLen To 1 Step -1
nTemp=Mod(nNum ,36 )
&& cStr:= AddAscII(cStr , nTemp ,i )
cStr= Stuff( cStr,i,1,Chr(nTemp+4 )
nNum=Int( nNum /36 )
If nNum =0
Exit
Endif
Next i
Return cStr
&& 將字串36進位轉成10進位數字
Function cTon36
Para cStr
nNum=0
i=0
nLen=Len(cStr)
cTemp=""
For i=nLen To 1 Step -1
&& nTemp= AscPos(cStr ,i)
nTemp= Asc( SubStr(cStr ,i,1) )
If nTemp<=47 .or. nTemp > Asc("z")
nTemp=0
Else
nTemp=nTemp-48
Endif
nNum= nNum+nTemp*36^(nLen-i)
Next
Return nNum |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 6 樓
|
發表於: 星期五 四月 13, 2007 3:13 pm 文章主題: |
|
|
這2 跟範例上的 Z 看起來好像一樣,
實際上是不同的字.
你要先了解, 為何它是用 36 進位, 不是其它進位.
因為要用一串看得懂字串來表現一個值,
用數字及英文字是最好的選擇.
像16進位就用到 0-9 A-F
請去跑跑看下列程式碼是會出現那些字,
你就會發現為何要用 - 48 或 -65
for i=0 to 255
if mod(i,10 )=0
?
endif
?? 'ASC(',str(i,3),') = ',chr(i)
next
*********
建議你重讀: 電腦基礎概念 這類的書.. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
gunsu77
註冊時間: 2007-03-09 文章: 22
第 7 樓
|
發表於: 星期五 四月 13, 2007 3:49 pm 文章主題: |
|
|
如果大於F就是用36進位嗎? |
|
回頂端 |
|
 |
gunsu77
註冊時間: 2007-03-09 文章: 22
第 8 樓
|
發表於: 星期五 四月 13, 2007 4:06 pm 文章主題: |
|
|
好煩喔 我怎麼那麼笨 到底要怎麼學才會壓 |
|
回頂端 |
|
 |
gunsu77
註冊時間: 2007-03-09 文章: 22
第 9 樓
|
發表於: 星期五 四月 13, 2007 5:18 pm 文章主題: |
|
|
&&將72進位字串轉10進位數值
Function cTon72
Para cStr
nNum=0
i=0
nLen=Len(cStr)
cTemp=""
For i=nLen To 1 Step -1
nTemp= Asc( SubStr(cstr ,i,1) )
If nTemp<=48 .or. nTemp > Asc("z")
nTemp=0
Else
nTemp=nTemp-49
Endif
nNum= nNum+nTemp*72^(nLen-i)
Next
Return nNum
是這樣嗎? |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 10 樓
|
發表於: 星期五 四月 13, 2007 5:31 pm 文章主題: |
|
|
電腦是最好的解答員,
寫出來的程式 run 一下各種條件, 就知道對不對.
寫程式沒捷徑,
要從基礎開始學.
除非你是天才型或是經驗豐富的程式設計師,
想要很快上手是不容易的. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
gunsu77
註冊時間: 2007-03-09 文章: 22
第 11 樓
|
發表於: 星期五 四月 13, 2007 5:46 pm 文章主題: |
|
|
可是我cTemp="" 帶一個值進去 出來卻是空白? 為啥???
對了...你是怎麼學的...網路又沒啥FOXPRO的教學 都不知怎麼學 |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 12 樓
|
發表於: 星期五 四月 13, 2007 5:59 pm 文章主題: |
|
|
你知道 cTemp 在你寫的程式裡的作用是什麼?
Para cStr 這行命令 的用處是什麼?
去舊書攤買vfp的書, 去圖書館借, 去買簡體版的書, 去跟你老闆要, 去網拍, 方法多種不及備載.
別老是要在網路上找到教學的書,
看實體的書跟看網路上的書是不一樣的. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
gunsu77
註冊時間: 2007-03-09 文章: 22
第 13 樓
|
發表於: 星期五 四月 13, 2007 6:04 pm 文章主題: |
|
|
那你今天可以教我上面那個程式的內容嗎? |
|
回頂端 |
|
 |
gunsu77
註冊時間: 2007-03-09 文章: 22
第 14 樓
|
發表於: 星期五 四月 13, 2007 6:49 pm 文章主題: |
|
|
&&10進位轉72進位
Para nNum,nLen
nNum=28736.00
cStr=""
nTemp=0
i=0
nLen=4
cStr= Replicate("0",nLen)
If nNum< 0 .or. nNum >=72 ^nLen
Return Replicate("*",nLen)
Endif
For i=nLen To 1 Step -1
nTemp=Mod(nNum ,72 )
&& cStr:= AddAscII(cStr , nTemp ,i )
cStr= Stuff( cStr,i,1,Chr(nTemp+49) )
nNum=Int( nNum /72 )
If nNum =0
Exit
Endif
Next i
? cStr
&&72進位轉10進位數值
cStr='06X9'
nNum=0
i=0
nLen=Len(cStr)
For i=nLen To 1 Step -1
nTemp= Asc( SubStr(cstr ,i,1) )
If nTemp<=48 .or. nTemp > Asc("z")
nTemp=0
Else
nTemp=nTemp-49
Endif
nNum= nNum+nTemp*72^(nLen-i)
Next
? nNum
這樣對嗎? |
|
回頂端 |
|
 |
weiyi07
註冊時間: 2007-03-16 文章: 10
第 15 樓
|
發表於: 星期五 四月 13, 2007 8:49 pm 文章主題: Re: 轉換問題 |
|
|
txet72 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+-*/[]{}\|"
clear
for i = 0 to 71
@ mod(i,10),int(i/10)*10+1say substr(txet72,i+1,1)+"="+str(i,3)
endfor
txtno = " "
@ 15 ,1 say "請輸入72位元碼:"
@ 15 , 16 get txtno
read
mno = 0
no = len(trim(txtno))
for i = no to 1 step - 1
mno = mno + val(str(at(substr(txtno,i,1),txet72)-1,2)+replicate("0",no-i))
endfor
@ 18,1 say "72進位轉成10進位數字:"
?? mno
我ㄝ寫一個程式 , 比教簡單 你淤可以式式 |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|