• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (C) 2019 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15export function uint8ArrayToBase64(buffer: Uint8Array): string {
16  return btoa(uint8ArrayToString(buffer));
17}
18
19// This function will not handle correctly buffers with a large number of
20// elements due to a js limitation on the number of arguments of a function.
21// The apply will in fact do a call like
22// 'String.fromCharCode(buffer[0],buffer[1],...)'.
23export function uint8ArrayToString(buffer: Uint8Array): string {
24  return String.fromCharCode.apply(null, Array.from(buffer));
25}
26
27export function stringToUint8Array(str: string): Uint8Array {
28  const bufView = new Uint8Array(new ArrayBuffer(str.length));
29  const strLen = str.length;
30  for (let i = 0; i < strLen; i++) {
31    bufView[i] = str.charCodeAt(i);
32  }
33  return bufView;
34}