mirror of
https://github.com/UtilitechAS/amsreader-firmware.git
synced 2026-01-16 16:47:15 +00:00
42 lines
1.0 KiB
C++
42 lines
1.0 KiB
C++
#include "hexutils.h"
|
|
|
|
String toHex(uint8_t* in) {
|
|
return toHex(in, sizeof(in)*2);
|
|
}
|
|
|
|
String toHex(uint8_t* in, uint16_t size) {
|
|
String hex;
|
|
for(int i = 0; i < size; i++) {
|
|
if(in[i] < 0x10) {
|
|
hex += '0';
|
|
}
|
|
hex += String(in[i], HEX);
|
|
}
|
|
hex.toUpperCase();
|
|
return hex;
|
|
}
|
|
|
|
void fromHex(uint8_t *out, String in, uint16_t size) {
|
|
for(int i = 0; i < size*2; i += 2) {
|
|
out[i/2] = strtol(in.substring(i, i+2).c_str(), 0, 16);
|
|
}
|
|
}
|
|
|
|
bool stripNonAscii(uint8_t* in, uint16_t size, bool extended) {
|
|
bool ret = false;
|
|
for(uint16_t i = 0; i < size; i++) {
|
|
if(in[i] == 0) { // Clear the rest with null-terminator
|
|
memset(in+i, 0, size-i);
|
|
break;
|
|
}
|
|
if(extended && (in[i] < 32 || in[i] == 127 || in[i] == 129 || in[i] == 141 || in[i] == 143 || in[i] == 144 || in[i] == 157)) {
|
|
memset(in+i, ' ', 1);
|
|
ret = true;
|
|
} else if(!extended && (in[i] < 32 || in[i] > 126)) {
|
|
memset(in+i, ' ', 1);
|
|
ret = true;
|
|
}
|
|
}
|
|
memset(in+size-1, 0, 1); // Make sure the last character is null-terminator
|
|
return ret;
|
|
} |