samir82show

byte to word and vise versa function

Feb 19th, 2014
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. #include <stdio.h>
  2. typedef short uint16_t;
  3. typedef unsigned char uint8_t;
  4. void
  5. word_to_bytes(uint16_t num, uint8_t *byte1, uint8_t *byte2);
  6. uint16_t
  7. bytes_to_word(uint16_t num, uint8_t *byte1, uint8_t *byte2);
  8. int
  9. main()
  10. {
  11. unsigned char byte1, byte2;
  12. uint16_t num = 0;
  13. word_to_bytes(1000, &byte1, &byte2);
  14. printf("byte1 = %d\t", byte1);
  15. printf("byte2 = %d\n", byte2);
  16. printf("num = %d\n", bytes_to_word(num, &byte1, &byte2));
  17. return (0);
  18. }
  19. void
  20. word_to_bytes(uint16_t num, uint8_t *byte1, uint8_t *byte2)
  21. {
  22. uint8_t i;
  23. uint16_t result = num;
  24. *byte1 = *byte2 = i = 0;
  25.  
  26. while (i < 8) {
  27. if (result%2)
  28. *byte1 |= (1 << i);
  29. result = result/2;
  30. i++;
  31. }
  32. i = 0;
  33. while (i < 8) {
  34. if (result%2)
  35. *byte2 |= (1 << i);
  36. result = result/2;
  37. i++;
  38. }
  39. }
  40. uint16_t
  41. bytes_to_word(uint16_t num, uint8_t *byte1, uint8_t *byte2)
  42. {
  43. uint8_t i, j;
  44. i = j = 0;
  45. while (i < 8) {
  46. if (*byte1 & (1 << i))
  47. num |= 1 << i;
  48. else
  49. num &= ~(1 << i);
  50. i++;
  51. }
  52. i = 0;
  53. while (i < 8) {
  54. j = i + 8;
  55. if (*byte2 & (1 << i))
  56. num |= 1 << j;
  57. else
  58. num &= ~(1 << j);
  59. i++;
  60.  
  61. }
  62. return (num);
  63. }
Advertisement
Add Comment
Please, Sign In to add comment