GMLscripts.com

bytes_to_b64

bytes_to_b64(str)
Returns a string of base64 digits (RFC 3548), 6 bits each.
COPY
  1. /// bytes_to_b64(str)
  2. //
  3. // Returns a string of base64 digits (RFC 3548), 6 bits each.
  4. //
  5. // str raw bytes, 8 bits each, string
  6. //
  7. /// GMLscripts.com/license
  8. {
  9. var str, len, pad, tab, b64, i, bin;
  10. str = argument0;
  11. len = string_length(str);
  12. pad = "=";
  13. tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  14. b64 = "";
  15. for (i=0; i<len; i+=3) {
  16. bin[0] = ord(string_char_at(str,i+1));
  17. bin[1] = ord(string_char_at(str,i+2));
  18. bin[2] = ord(string_char_at(str,i+3));
  19. b64 += string_char_at(tab,1+(bin[0]>>2));
  20. b64 += string_char_at(tab,1+(((bin[0]&3)<<4)|(bin[1]>>4)));
  21. if (i+1 >= len) b64 += pad;
  22. else b64 += string_char_at(tab,1+(((bin[1]&15)<<2)|(bin[2]>>6)));
  23. if (i+2 >= len) b64 += pad;
  24. else b64 += string_char_at(tab,1+(bin[2]&63));
  25. }
  26. return b64;
  27. }

Contributors: xot

GitHub: View · Commits · Blame · Raw