Büyük Sayılarla Çalışmak - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: Büyük Sayılarla Çalışmak (/showthread.php?tid=2598) Sayfalar:
1
2
|
Büyük Sayılarla Çalışmak - narkotik - 02-09-2018 Merhaba HexToDec işlemi yapıyorum. Fakat gelen hex. sayı fazla büyük buda sonucu bana - olarak döndürmesine neden oluyor. Bu tarz durumlarda ne yapılmalı. function HexToDec(Str: string): LongInt; var i, M: Integer; begin Result:=0; M:=1; Str:=AnsiUpperCase(Str); for i:=Length(Str) downto 1 do begin case Str[i] of '1'..'9': Result:=Result+(Ord(Str[i])-Ord('0'))*M; 'A'..'F': Result:=Result+(Ord(Str[i])-Ord('A')+10)*M; end; M:=M shl 4; end; end; Hex hali = 9a2929c7 Büyük Sayılarla Çalışmak - masteryoda - 02-09-2018 https://github.com/rvelthuis/DelphiBigNumbers buraya bir göz atın. Cvp: Büyük Sayılarla Çalışmak - narkotik - 02-09-2018 (02-09-2018, Saat: 21:06)masteryoda Adlı Kullanıcıdan Alıntı: https://github.com/rvelthuis/DelphiBigNumbers Aslında bana string olarak lazım sonuç. Sadece bir convert için bu kadar pası projeye eklemek ne kadar mantıklı Çok basit bir hata yaptığımı farkettim sonucu int64 yapıp ara değişkenleri integer yaptığım için patlıyomuşum. Herkese iyi akşamlar Saygılar. function HexToDec(Str: string): int64 ; var i, M: int64; begin Result:=0; M:=1; Str:=AnsiUpperCase(Str); for i:=Length(Str) downto 1 do begin case Str[i] of '1'..'9': Result:=Result+(Ord(Str[i])-Ord('0'))*M; 'A'..'F': Result:=Result+(Ord(Str[i])-Ord('A')+10)*M; end; M:=M shl 4; end; end; Büyük Sayılarla Çalışmak - sabanakman - 02-09-2018 Fonksiyon tipini LongInt yerine UInt64 olarak değiştirip deneyin. Çok daha büyük sayılar devreye girmeyecekse mevcut durumu idare edebilir belki. Yoksa bu durum için yazılacak kodlar, bunca pas dosyasını projeye eklemekten çok daha maliyetli olabilir . Büyük Sayılarla Çalışmak - uparlayan - 02-09-2018 Cardinal veri tipini kullanabilirsin. FFFFFFFF = 4294967295 http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Simple_Types_(Delphi) https://www.binaryhexconverter.com/hex-to-decimal-converter Büyük Sayılarla Çalışmak - narkotik - 02-09-2018 işin garip tarafı VCL'de doğru sonuç verirken firemonkeyde saçmalıyor. Büyük Sayılarla Çalışmak - uparlayan - 02-09-2018 UInt64 veri tipi ile de denermisin, http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.UInt64 Cvp: Büyük Sayılarla Çalışmak - narkotik - 02-09-2018 (02-09-2018, Saat: 22:32)uparlayan Adlı Kullanıcıdan Alıntı: UInt64 veri tipi ile de denermisin, Hocam denedim olmadı shl işlemi firemonkeyde saçmalıyor. Algoritmayı shl siz hale çektim düzeldi şimdi (02-09-2018, Saat: 22:32)uparlayan Adlı Kullanıcıdan Alıntı: UInt64 veri tipi ile de denermisin, Hocam fakat saçma geldi bana müsaitseniz kodu VCL de birde Firemonkeyde denermisiniz bir bende mi böyle oluyor. Büyük Sayılarla Çalışmak - uparlayan - 02-09-2018 VCL ve FMX'de windows x32 ve x64'te denedim, bende normal çalışıyor Cvp: Büyük Sayılarla Çalışmak - narkotik - 02-09-2018 (02-09-2018, Saat: 23:15)uparlayan Adlı Kullanıcıdan Alıntı: VCL ve FMX'de windows x32 ve x64'te denedim, bende normal çalışıyor Android derlediğimde telefonda saçmalıyor zaten |