Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdint.h>
- #include <limits.h>
- uint8_t *_convert_c_int_to_bytes(int64_t value, size_t size)
- {
- uint8_t *bytes = malloc(sizeof(uint8_t) * size);
- for (size_t i = 0; i < size; i++)
- bytes[i] = (value >> i * 8) & 0xFF;
- return bytes;
- }
- uint8_t *_convert_c_uint_to_bytes(uint64_t value, size_t size)
- {
- uint8_t *bytes = malloc(sizeof(uint8_t) * size);
- for (size_t i = 0; i < size; i++)
- bytes[i] = (value >> i * 8) & 0xFF;
- return bytes;
- }
- int64_t _convert_bytes_to_c_int(uint8_t *bytes, size_t size)
- {
- int64_t value = 0;
- for (size_t i = 0; i < size; i++)
- value += bytes[i] << (i * 8);
- return value;
- }
- uint64_t _convert_bytes_to_c_uint(uint8_t *bytes, size_t size)
- {
- uint64_t value = 0;
- for (size_t i = 0; i < size; i++)
- value += bytes[i] << (i * 8);
- return value;
- }
- void dbg_print_bytes(uint8_t *bytes, size_t size)
- {
- printf("uint8_t * {");
- for (size_t i = 0; i < size; i++)
- printf("%02x ", bytes[i]);
- printf("}\n");
- }
- int main(void)
- {
- printf("uint64_t %lu -> ", ULONG_MAX);
- dbg_print_bytes(_convert_c_uint_to_bytes(ULONG_MAX, 8), 8);
- printf("int64_t %li -> ", LONG_MIN);
- dbg_print_bytes(_convert_c_int_to_bytes(LONG_MIN, 8), 8);
- printf("int64_t %li -> ", LONG_MAX);
- dbg_print_bytes(_convert_c_int_to_bytes(LONG_MAX, 8), 8);
- printf("uint64_t %lu -> uint8_t * -> uint64_t %lu\n", ULONG_MAX, _convert_bytes_to_c_uint(_convert_c_uint_to_bytes(ULONG_MAX, 8), 8));
- printf("int64_t %li -> uint8_t * -> int64_t %li\n", LONG_MIN, _convert_bytes_to_c_int(_convert_c_int_to_bytes(LONG_MIN, 8), 8));
- printf("int64_t %li -> uint8_t * -> int64_t %li\n", LONG_MAX, _convert_bytes_to_c_int(_convert_c_int_to_bytes(LONG_MAX, 8), 8));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement