Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930
  1. #include "utils.h"
  2. /**
  3. * Converts the value of 'in' to 'outlen' bytes in big-endian byte order.
  4. */
  5. void ull_to_bytes(unsigned char *out, unsigned int outlen,
  6. unsigned long long in)
  7. {
  8. int i;
  9. /* Iterate over out in decreasing order, for big-endianness. */
  10. for (i = outlen - 1; i >= 0; i--) {
  11. out[i] = in & 0xff;
  12. in = in >> 8;
  13. }
  14. }
  15. /**
  16. * Converts the inlen bytes in 'in' from big-endian byte order to an integer.
  17. */
  18. unsigned long long bytes_to_ull(const unsigned char *in, unsigned int inlen)
  19. {
  20. unsigned long long retval = 0;
  21. unsigned int i;
  22. for (i = 0; i < inlen; i++) {
  23. retval |= ((unsigned long long)in[i]) << (8*(inlen - 1 - i));
  24. }
  25. return retval;
  26. }