47 lines
		
	
	
		
			802 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			802 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| (function () {
 | |
| 'use strict';
 | |
| 
 | |
| function bufferToHex(arr) {
 | |
|   var i;
 | |
|   var len;
 | |
|   var hex = '';
 | |
|   var c;
 | |
| 
 | |
|   for (i = 0, len = arr.length; i < len; i += 1) {
 | |
|     c = arr[i].toString(16);
 | |
|     if (c.length < 2) {
 | |
|       c = '0' + c;
 | |
|     }
 | |
|     hex += c;
 | |
|   }
 | |
| 
 | |
|   return hex;
 | |
| }
 | |
| 
 | |
| function hexToBuffer(hex) {
 | |
|   // TODO use Uint8Array or ArrayBuffer or DataView
 | |
|   var i;
 | |
|   var byteLen = hex.length / 2;
 | |
|   var arr;
 | |
|   var j = 0;
 | |
| 
 | |
|   if (byteLen !== parseInt(byteLen, 10)) {
 | |
|     throw new Error("Invalid hex length '" + hex.length + "'");
 | |
|   }
 | |
| 
 | |
|   arr = new Uint8Array(byteLen);
 | |
| 
 | |
|   for (i = 0; i < byteLen; i += 1) {
 | |
|     arr[i] = parseInt(hex[j] + hex[j + 1], 16);
 | |
|     j += 2;
 | |
|   }
 | |
| 
 | |
|   return arr;
 | |
| }
 | |
| 
 | |
| // Hex Convenience Functions
 | |
| window.Unibabel.hexToBuffer = hexToBuffer;
 | |
| window.Unibabel.bufferToHex = bufferToHex;
 | |
| 
 | |
| }());
 |