VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

轉換問題
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
gunsu77



註冊時間: 2007-03-09
文章: 22


第 1 樓

發表發表於: 星期三 四月 11, 2007 11:18 pm    文章主題: 轉換問題 引言回覆

請問一下 我要怎麼把字串72進位轉成10進位數字
阿要怎麼把10進位數字轉成72進位字串呢
可以寫個範例給我看嗎? 或教我怎麼用? 感謝大家
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 2 樓

發表發表於: 星期四 四月 12, 2007 12:45 am    文章主題: 引言回覆

會用到的函數有 int( ) ,mod( ) ,及用chr(0 到 71) 來代表72進位的大小.
由右而左, 將字串逐字取出做運算.

或參考這篇: http://vfp.sunyear.com.tw/viewtopic.php?t=1313

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
gunsu77



註冊時間: 2007-03-09
文章: 22


第 3 樓

發表發表於: 星期四 四月 12, 2007 12:51 am    文章主題: 引言回覆

好像很複雜....我很笨..可以說簡單一點的嗎@@
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
小桑•無痕



註冊時間: 2003-07-08
文章: 304
來自: Tainan, Taiwan

第 4 樓

發表發表於: 星期五 四月 13, 2007 8:47 am    文章主題: 引言回覆

方法跟換成16進位一樣
只是把16換成72.....ㄏㄏ

_________________
用力 Try 一下...可以發現很多好玩的事....
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
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+4Cool )
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
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
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進位嗎?
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
gunsu77



註冊時間: 2007-03-09
文章: 22


第 8 樓

發表發表於: 星期五 四月 13, 2007 4:06 pm    文章主題: 引言回覆

好煩喔 我怎麼那麼笨 到底要怎麼學才會壓
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
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
是這樣嗎?
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
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的教學 都不知怎麼學
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
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    文章主題: 引言回覆

那你今天可以教我上面那個程式的內容嗎?
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
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
這樣對嗎?
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
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

我ㄝ寫一個程式 , 比教簡單 你淤可以式式
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作