c语言之十六进制格式打印输出


#define BYTES_PER_LINE 16
void esp_log_buffer_hex_internal(const char* tag, const void* buffer, uint16_t buff_len)
{
	if (buff_len == 0) {
		return;
	}
	char temp_buffer[BYTES_PER_LINE + 3]; //for not-byte-accessible memory
	char hex_buffer[3 * BYTES_PER_LINE + 1];
	const char* ptr_line;
	int bytes_cur_line;

	do {
		if (buff_len > BYTES_PER_LINE) {
			bytes_cur_line = BYTES_PER_LINE;
		}
		else {
			bytes_cur_line = buff_len;
		}
		
		ptr_line = (char *)buffer;
		

		for (int i = 0; i < bytes_cur_line; i++) {
			sprintf(hex_buffer + 3 * i, "%02x ", (unsigned char)ptr_line[i]);
		}
		printf( "%s:%s\r\n",tag, hex_buffer);
		buffer =(char *)buffer+ bytes_cur_line;
		buff_len -= bytes_cur_line;
	} while (buff_len);
}

image

posted @ 2025-09-02 16:39  我不是萧海哇~~~  阅读(10)  评论(0)    收藏  举报