From 9e1d2fe1b6484bf6e693d104a7a30d0162d53e85 Mon Sep 17 00:00:00 2001 From: Kelvin Zhang Date: Mon, 19 Apr 2021 19:47:48 -0400 Subject: Add comment explaining why we need custom logic to parse int Test: no need Change-Id: I71df7c09b260881b8753b77b6950ce97740d3191 --- utils.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/utils.cc b/utils.cc index c3e613e..c82eb98 100644 --- a/utils.cc +++ b/utils.cc @@ -7,6 +7,11 @@ namespace bsdiff { int64_t ParseInt64(const uint8_t* buf) { + // BSPatch uses a non-standard encoding of integers. + // Highest bit of that integer is used as a sign bit, 1 = negative + // and 0 = positive. + // Therefore, if the highest bit is set, flip it, then do 2's complement + // to get the integer in standard form int64_t result = buf[7] & 0x7F; for (int i = 6; i >= 0; i--) { result <<= 8; -- cgit v1.2.3