/* Convert a buffer of binary values into a hex string representation */ char* bytesToHexString(uint8_t *bytes, size_t buflen) { char *retval; int i; retval = malloc(buflen*2 + 1); for(i=0; i<buflen; i++) { retval[i*2] = nibbleToChar(bytes[i] >> 4); retval[i*2+1] = nibbleToChar(bytes[i] & 0x0f); } retval[i*2] = '\0'; return retval; }
/* Convert a buffer of binary values into a hex string representation */ char *bytesToHexString(byteBuffer bb) { char *retval; size_t i; retval = malloc(bb->len*2 + 1); for(i=0; i<bb->len; i++) { retval[i*2] = nibbleToChar(bb->bytes[i] >> 4); retval[i*2+1] = nibbleToChar(bb->bytes[i] & 0x0f); } retval[bb->len*2] = 0; return retval; }
char *bytesToHexStringWithSpaces(byteBuffer bb, int breaks) { char *retval; size_t i, j; if(breaks == 0) { return bytesToHexString(bb); } breaks /= 2; retval = malloc(bb->len*2 + 1 + (bb->len*2 / breaks) + 10); for(i=0, j=0; i<bb->len; i++, j+=2) { retval[j] = nibbleToChar(bb->bytes[i] >> 4); retval[j+1] = nibbleToChar(bb->bytes[i] & 0x0f); if(((i+1) % breaks) == 0) { retval[j+2] = ' '; retval[j+3] = 0; j++; } } return retval; }
static unsigned char* bytesToHexString(unsigned char* bytes, unsigned long byteLength, unsigned char* buffer, unsigned long bufferLength) { unsigned long i; // Ensure the output buffer is big enough if (byteLength > ((bufferLength - 1)/2)) { return NULL; } // clear out the output buffer memset(buffer, 0, bufferLength); // loop through the bytes and fill in the output buffer for(i = 0; i < byteLength; i++) { buffer[i*2] = nibbleToChar(bytes[i] >> 4); buffer[i*2+1] = nibbleToChar(bytes[i] & 0x0f); } // return the buffer pointer return buffer; }