This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
stellar-stellar/src/utils/utils.h

64 lines
1.5 KiB
C
Raw Normal View History

2024-08-16 10:01:09 +08:00
#pragma once
2024-08-16 10:01:09 +08:00
#ifdef __cplusplus
extern "C"
{
#endif
#include <stdint.h>
#include <stdio.h>
static inline void hexdump_to_fd(int fd, uint32_t idx, const char *data, uint16_t len)
{
uint16_t i = 0;
uint16_t used = 0;
uint16_t offset = 0;
#define LINE_LEN 80
char line[LINE_LEN]; /* space needed 8+16*3+3+16 == 75 */
while (offset < len)
{
used = snprintf(line, LINE_LEN, "%08X ", idx + offset);
// hexdump
for (i = 0; ((offset + i) < len) && (i < 16); i++)
{
if (i == 8)
{
used += snprintf(line + used, LINE_LEN - used, " ");
}
used += snprintf(line + used, LINE_LEN - used, " %02x", (data[offset + i] & 0xff));
}
// padding
for (; i <= 16; i++)
{
if (i == 8)
{
used += snprintf(line + used, LINE_LEN - used, " ");
}
used += snprintf(line + used, LINE_LEN - used, " ");
}
// ascii
for (i = 0; (offset < len) && (i < 16); i++, offset++)
{
unsigned char c = data[offset];
if ((c < ' ') || (c > '~'))
{
c = '.';
}
if (i == 8)
{
used += snprintf(line + used, LINE_LEN - used, " ");
}
used += snprintf(line + used, LINE_LEN - used, "%c", c);
}
dprintf(fd, "%s\n", line);
}
2024-08-16 10:01:09 +08:00
}
#ifdef __cplusplus
}
#endif