void PacketCreator::addBytes(const char *hex) { size_t x = 0; for (size_t i = 0; i < strlen(hex) / 2; i++) { x = i * 2; unsigned char byte1 = getHexByte(hex[x]); unsigned char byte2 = getHexByte(hex[x + 1]); unsigned char byte = byte1 * 0x10 + byte2; add<uint8_t>(byte); } }
FLStatus readBytes( struct Buffer *buffer, const char *hexDigits, const char **error) { FLStatus retVal = FL_SUCCESS; uint32 length = (uint32)strlen(hexDigits); uint8 *p = buffer->data; BufferStatus bStatus; CHECK_STATUS( length & 1, FL_SVF_PARSE_ERR, cleanup, "readBytes(): I need an even number of hex digits"); bufZeroLength(buffer); length >>= 1; // Number of bytes bStatus = bufAppendConst(buffer, 0x00, length, error); CHECK_STATUS(bStatus, FL_BUF_APPEND_ERR, cleanup, "readBytes()"); while ( length-- ) { CHECK_STATUS(getHexByte(hexDigits, p++), FL_SVF_PARSE_ERR, cleanup, "readBytes()"); hexDigits += 2; } cleanup: return retVal; }