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 (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.