Hallo,
Ich könnte mal ein wenig Erklärungs-Hilfe gebrauchen ^^.
Ich versuche zu verstehe was diese Klasse, bzw die modInv()-Funktion genau macht und wie sie funktioniert.
Für diejenigen die es interessiert, diese Klasse stammt aus dem Open Source-Projekt ConfuserEx.
Der Name würde mich auf "modInverse" oder "modInvoke" schließen lassen, - allerdings ist bei der Klasse keine weitere Dokumentation vorhanden.
Was genau macht die Funktion und wie funktioniert sie?
Ich könnte mal ein wenig Erklärungs-Hilfe gebrauchen ^^.
Ich versuche zu verstehe was diese Klasse, bzw die modInv()-Funktion genau macht und wie sie funktioniert.
C#-Quellcode
- public static class MathsUtils {
- const ulong MODULO32 = 0x100000000;
- public static ulong modInv(ulong num, ulong mod) {
- ulong a = mod, b = num % mod;
- ulong p0 = 0, p1 = 1;
- while (b != 0) {
- if (b == 1) return p1;
- p0 += (a / b) * p1;
- a = a % b;
- if (a == 0) break;
- if (a == 1) return mod - p0;
- p1 += (b / a) * p0;
- b = b % a;
- }
- return 0;
- }
- public static uint modInv(uint num) {
- return (uint)modInv(num, MODULO32);
- }
- public static byte modInv(byte num) {
- return (byte)modInv(num, 0x100);
- }
- }
Für diejenigen die es interessiert, diese Klasse stammt aus dem Open Source-Projekt ConfuserEx.
Der Name würde mich auf "modInverse" oder "modInvoke" schließen lassen, - allerdings ist bei der Klasse keine weitere Dokumentation vorhanden.
Was genau macht die Funktion und wie funktioniert sie?
C# Developer
Learning C++
Learning C++