ascii85.h 555 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * SPDX-License-Identifier: GPL-2.0
  3. *
  4. * Copyright (c) 2008 Intel Corporation
  5. * Copyright (c) 2018 The Linux Foundation. All rights reserved.
  6. */
  7. #ifndef _ASCII85_H_
  8. #define _ASCII85_H_
  9. #include <linux/math.h>
  10. #include <linux/types.h>
  11. #define ASCII85_BUFSZ 6
  12. static inline long
  13. ascii85_encode_len(long len)
  14. {
  15. return DIV_ROUND_UP(len, 4);
  16. }
  17. static inline const char *
  18. ascii85_encode(u32 in, char *out)
  19. {
  20. int i;
  21. if (in == 0)
  22. return "z";
  23. out[5] = '\0';
  24. for (i = 5; i--; ) {
  25. out[i] = '!' + in % 85;
  26. in /= 85;
  27. }
  28. return out;
  29. }
  30. #endif