Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- typedef short uint16_t;
- typedef unsigned char uint8_t;
- void
- word_to_bytes(uint16_t num, uint8_t *byte1, uint8_t *byte2);
- uint16_t
- bytes_to_word(uint16_t num, uint8_t *byte1, uint8_t *byte2);
- int
- main()
- {
- unsigned char byte1, byte2;
- uint16_t num = 0;
- word_to_bytes(1000, &byte1, &byte2);
- printf("byte1 = %d\t", byte1);
- printf("byte2 = %d\n", byte2);
- printf("num = %d\n", bytes_to_word(num, &byte1, &byte2));
- return (0);
- }
- void
- word_to_bytes(uint16_t num, uint8_t *byte1, uint8_t *byte2)
- {
- uint8_t i;
- uint16_t result = num;
- *byte1 = *byte2 = i = 0;
- while (i < 8) {
- if (result%2)
- *byte1 |= (1 << i);
- result = result/2;
- i++;
- }
- i = 0;
- while (i < 8) {
- if (result%2)
- *byte2 |= (1 << i);
- result = result/2;
- i++;
- }
- }
- uint16_t
- bytes_to_word(uint16_t num, uint8_t *byte1, uint8_t *byte2)
- {
- uint8_t i, j;
- i = j = 0;
- while (i < 8) {
- if (*byte1 & (1 << i))
- num |= 1 << i;
- else
- num &= ~(1 << i);
- i++;
- }
- i = 0;
- while (i < 8) {
- j = i + 8;
- if (*byte2 & (1 << i))
- num |= 1 << j;
- else
- num &= ~(1 << j);
- i++;
- }
- return (num);
- }
Advertisement
Add Comment
Please, Sign In to add comment