題記プログラムのソースコードです。
拙いコードで申し訳ないですが、参考になればと思います。
初めてPythonで書いたコードになります。
デバッグもあまり細かいところまではできていないので、
もしかしたら、変な操作をするとおかしな動作はあるかもしれません。
でも、これ以上改良するつもりはなく、次の別なプログラム作成に時間を
使いたいと考えています。
※ひとつ不具合を発見。
10進数→16進数変換時、A-Fが含まれているとエラーになります。
10進数の正当性チェックをしていませんでした。
※コピペしたらタブが全てなくなってしまい、この記事内で編集。
そしたら、タブが使えなくて、編集にかなり手間取ってしまいました。
import ui
hd = '' #Hex data
#Set hex data
def setHex(amari):
global hd
if amari <= 9: #0 to 9
hd += str(amari)
else:
if amari == 10: #A
hd += 'A'
elif amari == 11: #B
hd += 'B'
elif amari == 12: #C
hd += 'C'
elif amari == 13: #D
hd += 'D'
elif amari == 14: #E
hd += 'E'
elif amari == 15: #F
hd += 'F'
else:
return (-1) #never come here
return 0
#Dec. to Hex
def dec2hex(sender):
global hd
label = sender.superview['label1'] #get label-field
dd = int(label.text) #text of label to int.
ln = len(label.text) #length of input
sho = 1 #init. sho to not zero
outputs = 0 #init. num. of display-char.
while sho != 0: #repeat until sho is 0
sho = int(dd / 16) #calc. sho
amari = int(dd % 16) #calc. amari
ret = setHex(amari) #set data to Hex-field
#if OK return 0, if NG return -1
dd = sho. #renew data for next
if ret < 0:
hd = 'NG'
return hd
outputs += 1 #increment num. of display-char.
kd = ''
for x in range(outputs,0,-1): #convert msb lsb
kd += hd[x-1]
return kd #return hex data
#Hex. to Dec.
def hex2dec(sender):
dd = 0
label = sender.superview['label1'] #get label-field
ln = len(label.text)
for x in range(0,ln):
dc = label.text[ln-x-1]
if dc in '0123456789': #0-9
dd += int(dc)*(16**x)
elif dc in 'A': #A
dd += 10*(16**x)
elif dc in 'B': #B
dd += 11*(16**x)
elif dc in 'C': #C
dd += 12*(16**x)
elif dc in 'D': #D
dd += 13*(16**x)
elif dc in 'E': #E
dd += 14*(16**x)
elif dc in 'F': #F
dd += 15*(16**x)
dc = str(dd) #convert dec. to str.
return dc #return dec. data
#display input char.
def display_char(sender,t):
label = sender.superview['label1']
if t == '':
label.text = ''
else:
label.text += t #add char to right-side
#Function of each button-click
def Btn_Click(sender): #clicked Button
t = sender.title #get title of button(0-9,A-F)
display_char(sender,t). #display input to label-field
#Excecute Dec. to Hex.
def BtnD2H_Click(sender):
label = sender.superview['label1']
ret = dec2hex(sender). #dec. to hex.
label.text = ret
#Excecute Hex. to Dec.
def BtnH2D_Click(sender):
label = sender.superview['label1']
ret = hex2dec(sender) #hex. to dec.
label.text = ret
def BtnClear_Click(sender):
global hd
hd = ''. #initialize saved data
display_char(sender,hd) #clear display
#start up
v = ui.load_view()
v.present('sheet')