Hallo Ich habe ein Problem mit Little Endian Base 128 ( LEB128) Ich habe ein ByteArray von dem ich weis das es immer mit einem unsigned LEB128 encoded Integer beginnt. Wie kann ich in C# die Zahl im LEB128 decodieren bzw mir anzeigen lassen. Ich in einem Forum folgenden Code gefunden allerdings benutzt dieser den BinaryReader ich habe alledings ein ByteArray und kein File
1 | uint GetSmallUnsigned(BinaryReader reader) { |
2 | int offset = 0; |
3 | uint val = 0; |
4 | while (true) { |
5 | byte c = reader.ReadByte(); |
6 | // transfer 7 bits per byte
|
7 | val |= (uint)(c & 0x7f) << offset; |
8 | // check terminator
|
9 | if ((c & 0x80) == 0) break; |
10 | offset += 7; |
11 | }
|
12 | return val; |
13 | }
|