diff --git a/index.html b/index.html
index 29b6f98..e9144b9 100644
--- a/index.html
+++ b/index.html
@@ -55,7 +55,7 @@
MIT License.
Source code available on git.
-
v1.4.3
+ v1.4.4
@@ -132,6 +132,32 @@
}
}
+ class Base64NumeralSystem extends NumeralSystem {
+ constructor(alphabet) {
+ super(64, alphabet, true);
+ }
+
+
+ decimalToBase(decimalNumber) {
+ const hex = decimalNumber.toString(16);
+ const b64 = Array.from(hex.padStart(hex.length + hex.length % 2))
+ .reduce((result, value, index, array) => {
+ if (index % 2 === 0) result.push(array.slice(index, index + 2));
+ return result;
+ }, [])
+ .map(pair => String.fromCharCode(parseInt(pair.join(""), 16)))
+ .join("");
+
+ return btoa(b64);
+ }
+
+ baseToDecimal(baseString) {
+ const hex = Array.from(atob(baseString))
+ .map(char => char.charCodeAt(0).toString(16).padStart(2, "0")).join("");
+ return bigInt(hex, 16);
+ }
+ }
+
class Base64NumeralSystemInput extends NumeralSystemInput {
// TODO Convert static methods to static properties once supported by Firefox
static defaultAlphabet() {
@@ -144,7 +170,7 @@
constructor(name) {
- super(name, new NumeralSystem(64, Base64NumeralSystemInput.defaultAlphabet(), true));
+ super(name, new Base64NumeralSystem(Base64NumeralSystemInput.defaultAlphabet()));
this.dropdownLabel = document.createElement("label");
this.dropdownLabel.setAttribute("for", `${this.name}Dropdown`);