59 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| var utils = exports;
 | |
| 
 | |
| function toArray(msg, enc) {
 | |
|   if (Array.isArray(msg))
 | |
|     return msg.slice();
 | |
|   if (!msg)
 | |
|     return [];
 | |
|   var res = [];
 | |
|   if (typeof msg !== 'string') {
 | |
|     for (var i = 0; i < msg.length; i++)
 | |
|       res[i] = msg[i] | 0;
 | |
|     return res;
 | |
|   }
 | |
|   if (enc === 'hex') {
 | |
|     msg = msg.replace(/[^a-z0-9]+/ig, '');
 | |
|     if (msg.length % 2 !== 0)
 | |
|       msg = '0' + msg;
 | |
|     for (var i = 0; i < msg.length; i += 2)
 | |
|       res.push(parseInt(msg[i] + msg[i + 1], 16));
 | |
|   } else {
 | |
|     for (var i = 0; i < msg.length; i++) {
 | |
|       var c = msg.charCodeAt(i);
 | |
|       var hi = c >> 8;
 | |
|       var lo = c & 0xff;
 | |
|       if (hi)
 | |
|         res.push(hi, lo);
 | |
|       else
 | |
|         res.push(lo);
 | |
|     }
 | |
|   }
 | |
|   return res;
 | |
| }
 | |
| utils.toArray = toArray;
 | |
| 
 | |
| function zero2(word) {
 | |
|   if (word.length === 1)
 | |
|     return '0' + word;
 | |
|   else
 | |
|     return word;
 | |
| }
 | |
| utils.zero2 = zero2;
 | |
| 
 | |
| function toHex(msg) {
 | |
|   var res = '';
 | |
|   for (var i = 0; i < msg.length; i++)
 | |
|     res += zero2(msg[i].toString(16));
 | |
|   return res;
 | |
| }
 | |
| utils.toHex = toHex;
 | |
| 
 | |
| utils.encode = function encode(arr, enc) {
 | |
|   if (enc === 'hex')
 | |
|     return toHex(arr);
 | |
|   else
 | |
|     return arr;
 | |
| };
 |