瀏覽代碼

Fix issues with `readBufferFromBigInt` when little=true, signed=true (#531)

Roj 2 年之前
父節點
當前提交
4cc6a66156
共有 1 個文件被更改,包括 10 次插入27 次删除
  1. 10 27
      gramjs/Helpers.ts

+ 10 - 27
gramjs/Helpers.ts

@@ -143,37 +143,20 @@ export function readBufferFromBigInt(
     }
 
     const hex = bigIntVar.toString(16).padStart(bytesNumber * 2, "0");
-    let littleBuffer = Buffer.from(hex, "hex");
-    if (little) {
-        littleBuffer = littleBuffer.reverse();
-    }
+    let buffer = Buffer.from(hex, "hex");
 
     if (signed && below) {
-        if (little) {
-            let reminder = false;
-            if (littleBuffer[0] !== 0) {
-                littleBuffer[0] -= 1;
-            }
-            for (let i = 0; i < littleBuffer.length; i++) {
-                if (littleBuffer[i] === 0) {
-                    reminder = true;
-                    continue;
-                }
-                if (reminder) {
-                    littleBuffer[i] -= 1;
-                    reminder = false;
-                }
-                littleBuffer[i] = 255 - littleBuffer[i];
+            buffer[buffer.length - 1] =
+                256 - buffer[buffer.length - 1];
+            for (let i = 0; i < buffer.length - 1; i++) {
+                buffer[i] = 255 - buffer[i];
             }
-        } else {
-            littleBuffer[littleBuffer.length - 1] =
-                256 - littleBuffer[littleBuffer.length - 1];
-            for (let i = 0; i < littleBuffer.length - 1; i++) {
-                littleBuffer[i] = 255 - littleBuffer[i];
-            }
-        }
+
+    } if (little) {
+        buffer = buffer.reverse();
     }
-    return littleBuffer;
+
+    return buffer;
 }
 
 /**