Utility library for MTS Socket Modem Arduino Shield devices from Multi-Tech Systems
Dependents: mtsas mtsas thermostat_fan_demo--fan mtsas ... more
NOTE: MTS-Utils has moved to GitHub. This version will not be updated. For updates, go to the GitHub version.
Diff: MTSText.cpp
- Revision:
- 15:ae12624eb600
- Parent:
- 14:1d88cf5266c8
--- a/MTSText.cpp Wed Sep 09 11:59:59 2015 -0500 +++ b/MTSText.cpp Tue Mar 21 15:26:50 2017 -0500 @@ -69,24 +69,34 @@ return std::string(buff); } -std::string Text::bin2hexString(const std::vector<uint8_t>& data, const char* delim, bool leadingZeros) { - uint8_t data_arr[data.size()]; +std::string Text::bin2hexString(const std::vector<uint8_t>& data, const char* delim, bool leadingZeros, bool bytePadding) { + std::string ret; + uint8_t *data_arr = new uint8_t[data.size()]; - for (int i = 0; i < data.size(); i++) + for (size_t i = 0; i < data.size(); i++) data_arr[i] = data[i]; - return bin2hexString(data_arr, data.size(), delim, leadingZeros); + ret = bin2hexString(data_arr, data.size(), delim, leadingZeros, bytePadding); + + delete[] data_arr; + + return ret; } -std::string Text::bin2hexString(const uint8_t* data, const uint32_t len, const char* delim, bool leadingZeros) { +std::string Text::bin2hexString(const uint8_t* data, const uint32_t len, const char* delim, bool leadingZeros, bool bytePadding) { std::string str; - char buf[32]; char lead[] = "0x"; + char buf[5]; for (uint32_t i = 0; i < len; i++) { if (leadingZeros) str.append(lead); - snprintf(buf, sizeof(buf), "%02x", data[i]); + + if (bytePadding) + snprintf(buf, sizeof(buf), "%02x", data[i]); + else + snprintf(buf, sizeof(buf), "%x", data[i]); + str.append(buf, strlen(buf)); if (i < len - 1) str.append(delim);