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;
							 | 
						||
| 
								 | 
							
								}
							 |