getput.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #include "u.h"
  2. void
  3. put64be(uint8_t *p, uint64_t x)
  4. {
  5. p[0] = x>>56;
  6. p[1] = x>>48;
  7. p[2] = x>>40;
  8. p[3] = x>>32;
  9. p[4] = x>>24;
  10. p[5] = x>>16;
  11. p[6] = x>>8;
  12. p[7] = x;
  13. }
  14. void
  15. put32be(uint8_t *p, uint32_t x)
  16. {
  17. p[0] = x>>24;
  18. p[1] = x>>16;
  19. p[2] = x>>8;
  20. p[3] = x;
  21. }
  22. void
  23. put24be(uint8_t *p, int x)
  24. {
  25. p[0] = x>>16;
  26. p[1] = x>>8;
  27. p[2] = x;
  28. }
  29. void
  30. put16be(uint8_t *p, int x)
  31. {
  32. p[0] = x>>8;
  33. p[1] = x;
  34. }
  35. uint64_t
  36. get64be(uint8_t *p)
  37. {
  38. return
  39. ((uint64_t)p[0]<<56)|((uint64_t)p[1]<<48)|((uint64_t)p[2]<<40)|(uint64_t)p[3]<<32|
  40. ((uint64_t)p[4]<<24)|((uint64_t)p[5]<<16)|((uint64_t)p[6]<<8)|(uint64_t)p[7];
  41. }
  42. uint32_t
  43. get32be(uint8_t *p)
  44. {
  45. return ((uint32_t)p[0]<<24)|((uint32_t)p[1]<<16)|((uint32_t)p[2]<<8)|(uint32_t)p[3];
  46. }
  47. uint32_t
  48. get24be(uint8_t *p)
  49. {
  50. return ((uint32_t)p[0]<<16)|((uint32_t)p[1]<<8)|(uint32_t)p[2];
  51. }
  52. uint16_t
  53. get16be(uint8_t *p)
  54. {
  55. return ((uint16_t)p[0]<<8)|(uint16_t)p[1];
  56. }
  57. void
  58. put64le(uint8_t *p, uint64_t x)
  59. {
  60. p[0] = x;
  61. p[1] = x>>8;
  62. p[2] = x>>16;
  63. p[3] = x>>24;
  64. p[4] = x>>32;
  65. p[5] = x>>40;
  66. p[6] = x>>48;
  67. p[7] = x>>56;
  68. }
  69. void
  70. put32le(uint8_t *p, uint32_t x)
  71. {
  72. p[0] = x;
  73. p[1] = x>>8;
  74. p[2] = x>>16;
  75. p[3] = x>>24;
  76. }
  77. void
  78. put24le(uint8_t *p, int x)
  79. {
  80. p[0] = x;
  81. p[1] = x>>8;
  82. p[2] = x>>16;
  83. }
  84. void
  85. put16le(uint8_t *p, int x)
  86. {
  87. p[0] = x;
  88. p[1] = x>>8;
  89. }
  90. uint64_t
  91. get64le(uint8_t *p)
  92. {
  93. return
  94. ((uint64_t)p[0])|((uint64_t)p[1]<<8)|((uint64_t)p[2]<<16)|(uint64_t)p[3]<<24|
  95. ((uint64_t)p[4]<<32)|((uint64_t)p[5]<<40)|((uint64_t)p[6]<<48)|(uint64_t)p[7]<<56;
  96. }
  97. uint32_t
  98. get32le(uint8_t *p)
  99. {
  100. return ((uint32_t)p[0])|((uint32_t)p[1]<<8)|((uint32_t)p[2]<<16)|(uint32_t)p[3]<<24;
  101. }
  102. uint32_t
  103. get24le(uint8_t *p)
  104. {
  105. return ((uint32_t)p[0])|((uint32_t)p[1]<<8)|(uint32_t)p[2]<<16;
  106. }
  107. uint16_t
  108. get16le(uint8_t *p)
  109. {
  110. return ((uint16_t)p[0])|(uint16_t)p[1]<<8;
  111. }