Soyle soyleyeyim, 72. satirda ans = hexToDecimal(num) yapmissiniz ama fonksiyonda numara ve cikis dosyasi gerekiyor. yani ans=hexToDecimal(num, "Dosyaadi") gibi bir sey yapmaniz gerek.
Tekrar merhaba.
-----------
def con(n,b):
x = n.upper()
d = d = len ( n )-1
l = 0
for i in x:
if(i > "F"):
print("Tabana Göre Geçersiz Giriş ")
exit()
else:
h = int(i, 16)
l += h*(b**d)
d = d-1
print(l)
n = input("Onaltılık Değeri Girin: ")
b = 16
print("Ondalık Değeriniz: ")
con(n,b)
fileToAppend = open("2.txt","a")
liste = [con]
for bilgi in liste:
fileToAppend.write(f"{bilgi}\n")
fileToAppend.flush()
fileToAppend.close()
-----------
Bu kod çalışır gibi oldu çıkış verdi ancak anlamadığım CMD ekranındaki sonuç doğruyken metin belgesindeki sonuç 0x000001EA573FC1E0 gibi bir sonuç elde etti... Sebebi ne olabilir?
Kodu okurken zorlanıyorum aynı değerle bir daha çalıştırınca dosyaya farklı bir şey yazıyor mu?
Anladığım kadarıyla dosyaya fonksiyonun bellekteki yerini yazıyor bu da işine yaramaz
Kodu okurken zorlanıyorum aynı değerle bir daha çalıştırınca dosyaya farklı bir şey yazıyor mu?
Anladığım kadarıyla dosyaya fonksiyonun bellekteki yerini yazıyor bu da işine yaramaz
Anladım. Yukarıda yazmaya çalıştığım kod biraz enteresan olmuş sadece 0-f arası dönüştürüyor. İşe yaramaz özetle. 16'nun kuvvetini almamı söylediğin için böyle bir kod denedim. Lakin çöp oldu. Kodu yazmayı başardım.
----
def hexToDecimal(num):
result = 0
num = str(num)
ans = [0]*len(num)
for i in range(len(num)):
if(num==('0')):
ans = 0
elif(num==('1')):
x = 2 ** (4*(len(num)-i-1))
ans = x
elif(num==('2')):
x = 2 ** (4*(len(num)-i-1) + 1)
ans = x
elif(num==('3')):
x = (2 ** (4*(len(num)-i-1) + 1) + 2 ** (4*(len(num)-i-1)))
ans = x
elif(num==('4')):
x = 2 ** (4*(len(num)-i-1) + 2)
ans = x
elif(num==('5')):
x = 2 ** (4*(len(num)-i-1) + 2) + 2 ** (4*(len(num)-i-1))
ans = x
elif(num==('6')):
x = 2 ** (4*(len(num)-i-1) + 2) + 2 ** (4*(len(num)-i-1) + 1)
ans = x
elif(num==('7')):
x = 2 ** (4*(len(num)-i-1) + 2) + 2 ** (4*(len(num)-i-1) + 1) + 2 ** (4*(len(num)-i-1))
ans = x
elif(num==('8')):
x = 2 ** (4*(len(num)-i-1) + 3)
ans = x
elif(num==('9')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1))
ans = x
elif(num==('a')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1) + 1)
ans = x
elif(num==('b')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1) + 1) + 2 ** (4*(len(num)-i-1))
ans = x
elif(num==('c')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1) + 2)
ans = x
elif(num==('d')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1) + 2) + 2 ** (4*(len(num)-i-1))
ans = x
elif(num==('e')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1) + 2) + 2 ** (4*(len(num)-i-1) + 1)
ans = x
elif(num==('f')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1) + 2) + 2 ** (4*(len(num)-i-1) + 1) + 2 ** (4*(len(num)-i-1))
ans = x
for i in range(len(num)):
result = ans + result
return result
def main():
run = True
print(" --- Hex - Ondalık Dönüştürücü ---\nÇıkmak için istediğiniz zaman * yazın")
while(run==True):
num = input("\nLütfen ondalık (küçük harf) olarak değiştirilecek bir onaltılık sayı girin: ")
if(num=="*"):
run = False
else:
ans=hexToDecimal(num)
fileToAppend = open("çıkış.txt","a")
fileToAppend.write(f"{ans}\n")
fileToAppend.flush()
print("\n",num, "ondalık sayı olarak: ",ans)
main()