Tamam, bu yüzden PHP sadece doğal, 32-bitlik imzalı tamsayı destekler düşünüyor, keyfi büyük tamsayılar ile ilgili olmak üzere en iyi dil değildir. Ne olsa yapmaya çalışıyorum (/ çıkarma / çarpma / bölme eklemek) bir keyfi büyük ikili sayısını temsil eder ve ikisi basit aritmetik işlemleri gerçekleştirmek mümkün olabilecek bir sınıf oluşturmak olduğunu.
Benim hedef 128-bit tamsayı ile uğraşıyor.
Ben bakıyorum yaklaşımlar, ve ben onlarla görmek sorunların bir çift var. Eğer bu konuda gitmek nasıl tercih ve ne herhangi bir giriş veya şerh büyük mutluluk duyacağız.
Approach #1:, dört 32-bit tamsayı olarak kendi iç tamsayı saklayan bir 128-bit tamsayı sınıf oluşturun. Bu yaklaşım ile tek sorun iki işlenen bireysel parçaları işlenirken taşma / Yetersizlik sorunları ele hakkında gitmek nasıl emin değilim ki.
Approach #2: Bu onu çözmek için tasarlanmış bir şey gibi görünüyor, BCMath uzantısı kullanın. Benim 128-bit tamsayı herhangi bir yuvarlama hataları olamaz, çünkü bu yaklaşım benim tek endişe, BCMath uzatma ölçek ayarı; onlar kesin olmalıdır. Ben de sonunda bir ikili dize (Daha sonra bazı mcrypt şifreleme fonksiyonları içine kıpırdamak gerekir ki) içine BCMath fonksiyonların sonucu dönüştürmek için güçlü olmak için endişeleniyorum.
Approach #3: (muhtemelen LSB ilk) ikili dizeleri olarak sayıları saklayın. Teorik olarak ben herhangi bir keyfi boyutta tamsayıyı bu şekilde saklamak gerekir. Ben yapmak zorunda olan tüm iki ikili dizeleri eklenti / sub / mult / div gerçekleştirmek ve bir ikili dize sonuç üretmek için dört temel aritmetik fonksiyonları yazmaya. Bu benim de Mcrypt teslim etmeye gerek tam biçimi, böylece eklenen bir artı var. Bu benim şu anda en çok söz olduğunu düşünüyorum yaklaşımdır, ama elimdeki tek anlaşmazlık noktası PHP (ben biliyorum) bana tek tek bitleri işlemek için herhangi bir yol sunmuyor olması. Ben Yaklaşım # 1 uygulamak taşma / Yetersizlik işleme hakkında soruları bu noktada, (hayır cinas amaçlanan) bayt büyüklüğünde parçalar bölmek olurdu inanıyorum.