javascriptnpm7-bit

Reading 7BitEncodedInt in Javascript


I am reading a binary in javascript. I think this file was written in C# and the the way binaries handle the strings in C# is a little different than how it is handled in as mentioned in

https://learn.microsoft.com/en-us/dotnet/api/system.io.binaryreader.readstring?view=net-7.0

The thing is that I am not able to find any library which allows me to read C# style strings OR 7bitEncodedInt. Any suggestions on any code/package that allows me to do that?


Solution

  • Actually, I found an answer in one of the libraries and modified according to what a getString would look like:

    private GetString(buffer) {
        try {
          let length = this.Read7BitEncodedInt(buffer);
          if (length < 0) {
            this.toastrService.error('Error');
          }
          if (length == 0) {
            return '';
          } else {
            return buffer.getNextString(length);
          }
        }
        catch (exception){
          this.toastrService.error('Error')
        }
    
    
      }
    
      private Read7BitEncodedInt(buffer) {
        let count = 0, shift = 0, b = 0, i = 0;
        try {
          do {
            if (shift === 5 * 7) {
              this.toastrService.error('Error');
            }
            //Get a single byte
            b = buffer.getNextBytes(1);
            // tslint:disable-next-line:no-bitwise
    
            //Update the value of the int based on the byte that it belongs to(shift value)
            count |= (b & 0x7F) << shift;
            shift += 7;
            i++;
            // tslint:disable-next-line:triple-equals no-bitwise
            //Exit if byte is empty
          } while ((b & 0x80) != 0);
        }
        catch (exception){
          this.toastrService.error('Error message');
        }