Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

347
Views
Google-App-Script base64 vs javascript base64 decode

Please, help with GoogleApps Script Base 64 Decode

-- Google Apps Script

  var tmp_base64 = "EXezAAA=";
  var byte_base64 = Utilities.base64Decode(tmp_base64);

  return ContentService.createTextOutput('\''+ tmp_base64 + '\' => \''+byte_base64 +'\'' );

return : 'EXezAAA=' => '17,119,-77,0,0'

-- javascript

function _base64ToArrayBuffer(base64) {
    var binary_string = window.atob(base64);
    var len = binary_string.length;
    var bytes = new Uint8Array(len);
    for (var i = 0; i < len; i++) {
        bytes[i] = binary_string.charCodeAt(i);
    }
    return bytes;
}
_base64ToArrayBuffer('EXezAAA=');

return : Uint8Array(5) [ 17, 119, 179, 0, 0 ]

correctly converted javascript, but why does Google Apps Script convert to wrong bytes?

How to solve this problem ?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

When the document of "Uint8Array" is seen, it says as follows. Ref

The Uint8Array typed array represents an array of 8-bit unsigned integers.

By this, your _base64ToArrayBuffer returns [17, 119, 179, 0, 0].

On the other hand, at Google Apps Script, the byte array uses "twos-complement 8-bit signed integers" as the default. By this, Utilities.base64Decode("EXezAAA=") returns [17, 119, -77, 0, 0].

This is the reason for your current situation.

For example, when you want to retrieve the same value, in Javascript, please modify it as follows.

From:

var bytes = new Uint8Array(len);

To:

var bytes = new Int8Array(len);

By this, your _base64ToArrayBuffer returns [17, 119, -77, 0, 0].

When you want to retrieve the value of [17, 119, 179, 0, 0] at Google Apps Script, please modify it as follows.

From:

var byte_base64 = Utilities.base64Decode(tmp_base64);

To:

var byte_base64 = [...Uint8Array.from(Utilities.base64Decode(tmp_base64))];

By this, your _base64ToArrayBuffer returns [17, 119, 179, 0, 0].

References:

  • Uint8Array

  • Int8Array

    • When the document of "Int8Array" is seen, it says as follows. Ref

    The Int8Array typed array represents an array of twos-complement 8-bit signed integers.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!