Skip to content

Commit 76ded51

Browse files
Add string decoding, bump to v0.2
1 parent e7cd0b5 commit 76ded51

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

dllmain.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include <vector>
77
#include <bitset>
88

9-
static const char version[] = "BL4 Serial Decoder v0.1";
9+
static const char version[] = "BL4 Serial Decoder v0.2";
1010

1111

1212
unsigned char reverseBits(unsigned char b) {
@@ -79,6 +79,18 @@ unsigned int decode_varint(std::string& remaining_string) {
7979
return std::bitset<16>(data_string).to_ulong();
8080
}
8181

82+
std::string decode_string(std::string& remaining_string) {
83+
std::string output = "";
84+
int len = decode_varint(remaining_string);
85+
for (int i = 0; i < len; i++) {
86+
std::string charbits = remaining_string.substr(0, 7);
87+
std::reverse(charbits.begin(), charbits.end());
88+
output += static_cast<char>(std::bitset<7>(charbits).to_ulong());
89+
remaining_string = remaining_string.substr(7);
90+
}
91+
return output;
92+
}
93+
8294
std::string decode_part(std::string& remaining_string) {
8395
int first_value = decode_varint(remaining_string);
8496
bool flag = remaining_string.at(0) == '1';
@@ -120,9 +132,7 @@ std::string decode_part(std::string& remaining_string) {
120132
list_string += std::to_string(decode_varbit(remaining_string));
121133
}
122134
if (first_in_list) first_in_list = false;
123-
else if (subtype == "11") {
124-
return "part_decode_error";
125-
}
135+
126136
}
127137
}
128138
list_string += "]";
@@ -176,7 +186,9 @@ std::string decode_bitstring(std::string& bitstring) {
176186
}
177187
}
178188
else if (value_type == "11") {
179-
return output_string;
189+
bitstring = bitstring.substr(3);
190+
std::string value = decode_string(bitstring);
191+
output_string += "\"" + value + "\"";
180192
}
181193
else {
182194
bitstring = bitstring.substr(1);

0 commit comments

Comments
 (0)