PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
13866 | 00/11/09 14:18:01 | RE(4):10進数→16進数の変換について By t.y |
13863 | 00/11/09 13:14:20 | RE(3):10進数→16進数の変換について By ふくぞー |
13861 | 00/11/09 12:49:13 | RE(2):10進数→16進数の変換について By Taka |
13844 | 00/11/08 19:49:43 | RE(1):10進数→16進数の変換について By M.M |
13843 | 00/11/08 19:29:42 | 10進数→16進数の変換について By adachit |
カテゴリ:PowerBuilderの開発環境
日付:2000年11月09日 13:14 発信者:ふくぞー
題名:RE(3):10進数→16進数の変換について
adachitさん、こんにちは。
>>>integerの10進数を16進数に変換し、string型の変数に格納したいのですが、
>>>そういった関数はPowerBuilderにはないのでしょうか?
以前作った関数でよければご使用ください。
若干バグがふくまれているかも(-_-;)
p.s
なぜかソースコピーしてもインデントがつかない・・。見にくくてすいません・・。
//数値変換関数 f_ChangeNumeric()
//機 能:M進数の数値をN進数に変換する。(M、Nは2?36の範囲)
//引 数 :(1)変換前数値(String型)・・srcnum
/ (2)変換前M進数(Integer型)・・srcSS
// (3)変換後N進数(Integer型)・・desSS
// 戻り値:変換後数値(String型)
// 備 考:エラーの時(N進数でNの値以上の数値が使われた等)は、
//-------------------------------------------------
Int g,i,j,k
dec tmpAns,h
String desNum
If srcSS < 2 Or srcSS > 36 Or desSS < 2 Or desSS > 36 Then
Return \"\"
End if
desNum = \"\" //答えのクリア
//M進数数値>10進数数値の変換
srcNum = Upper(srcNum) //小文字を大文字に変換
tmpAns = Dec(0) //内部形式10進数型にセット
If srcSS = 10 Then
tmpAns = Dec(srcNum)
Else
For i = 1 To Len(srcNum)
g = Pos(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\", Mid(srcNum, i, 1)) - 1
If g < srcSS Then
tmpAns = tmpAns * srcSS + g
Else
Return \"\"
End If
Next
End If
//10進数数値>N進数数値の変換
If desSS = 10 Then
desNum = String(tmpAns)
Else
k = 0
h = Dec(0)
Do
k = k + 1
h = 1
For i = 1 To k
h = h * desSS
Next
Loop While Not tmpAns < h
For i = 1 To k
h = 1
For j = 1 To (k - i)
h = h * desSS
Next
desNum = desNum + Mid(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\", Int(tmpAns / h) + 1, 1)
tmpAns = tmpAns - Int(tmpAns / h) * h //剰余を求める
Next
End If
Return desNum
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS (記載なし)
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.