-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample.c
More file actions
33 lines (27 loc) · 1.06 KB
/
example.c
File metadata and controls
33 lines (27 loc) · 1.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include "bin2obj.h"
/* External symbols generated by bin2obj */
BIN2OBJ_EXTERN(test);
int main(void) {
/* Three symbols are generated: test_data, test_end, test_size */
printf("Data start: %p\n", (void*)BIN2OBJ_DATA(test));
printf("Data end: %p\n", (void*)BIN2OBJ_END(test));
printf("Data size: %zu bytes\n\n", BIN2OBJ_SIZE(test));
/* Verify: end - data = size */
printf("Verification: end - data = %td (should equal size)\n\n",
BIN2OBJ_END(test) - BIN2OBJ_DATA(test));
printf("First 50 bytes:\n");
/* Print first 50 bytes or less */
size_t print_size = BIN2OBJ_SIZE(test) < 50 ? BIN2OBJ_SIZE(test) : 50;
for (size_t i = 0; i < print_size; i++) {
if (BIN2OBJ_DATA(test)[i] >= 32 && BIN2OBJ_DATA(test)[i] < 127) {
putchar(BIN2OBJ_DATA(test)[i]); /* Printable ASCII */
} else if (BIN2OBJ_DATA(test)[i] == '\n') {
putchar('\n');
} else {
printf("\\x%02X", BIN2OBJ_DATA(test)[i]); /* Non-printable */
}
}
printf("\n");
return 0;
}