24 lines
		
	
	
		
			673 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			24 lines
		
	
	
		
			673 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 
 | ||
|  | export function ArrayBufferToBase64 (buffer) { | ||
|  |     var binary = ''; | ||
|  |     var bytes = new Uint8ClampedArray(buffer); | ||
|  |     for (var len = bytes.byteLength, i = 0; i < len; i++) { | ||
|  |         binary += String.fromCharCode(bytes[i]); | ||
|  |     } | ||
|  |     return btoa(binary); | ||
|  | } | ||
|  | 	 | ||
|  | export function Base64ToUint8ClampedArray(base64String) { | ||
|  | 	const padding = '='.repeat((4 - base64String.length % 4) % 4); | ||
|  | 	const base64 = (base64String + padding) | ||
|  | 		.replace(/\-/g, '+') | ||
|  | 		.replace(/_/g, '/'); | ||
|  | 
 | ||
|  | 	const rawData = atob(base64); | ||
|  | 	const outputArray = new Uint8ClampedArray(rawData.length); | ||
|  | 
 | ||
|  | 	for (let i = 0; i < rawData.length; ++i) { | ||
|  | 		outputArray[i] = rawData.charCodeAt(i); | ||
|  | 	} | ||
|  | 	return outputArray; | ||
|  | } |