parent
811c30d6db
commit
839a73d8a5
@ -0,0 +1,46 @@ |
||||
/** |
||||
* compress/decompress hex-strings to utf16 or base64 |
||||
* thx @juvian |
||||
* @link https://stackoverflow.com/a/40471908/3443137
|
||||
*/ |
||||
|
||||
import * as util from './util'; |
||||
|
||||
export function compress(hex) { |
||||
var base64 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; |
||||
|
||||
hex = util.removeTrailing0x(hex); |
||||
|
||||
// if base64:true, we use our own function because it results in a smaller output
|
||||
if (base64 === true) return new Buffer(hex, 'hex').toString('base64'); |
||||
|
||||
var string = ''; |
||||
while (hex.length % 4 != 0) { |
||||
// we need it to be multiple of 4
|
||||
hex = '0' + hex; |
||||
} |
||||
for (var i = 0; i < hex.length; i += 4) { |
||||
// get char from ascii code which goes from 0 to 65536
|
||||
string += String.fromCharCode(parseInt(hex.substring(i, i + 4), 16)); |
||||
} |
||||
return string; |
||||
} |
||||
|
||||
export function decompress(compressedString) { |
||||
var base64 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; |
||||
|
||||
|
||||
// if base64:true, we use our own function because it results in a smaller output
|
||||
if (base64 === true) { |
||||
var ret = new Buffer(compressedString, 'base64').toString('hex'); |
||||
return util.addTrailing0x(ret); |
||||
} |
||||
|
||||
var hex = ''; |
||||
for (var i = 0; i < compressedString.length; i++) { |
||||
// get character ascii code and convert to hexa string, adding necessary 0s
|
||||
hex += ((i == 0 ? '' : '000') + compressedString.charCodeAt(i).toString(16)).slice(-4); |
||||
} |
||||
hex = hex.toLowerCase(); |
||||
return util.addTrailing0x(hex); |
||||
} |
@ -1,3 +1,11 @@ |
||||
import Web3 from 'web3'; |
||||
|
||||
export var web3 = new Web3(); |
||||
export var web3 = new Web3(); |
||||
|
||||
export function removeTrailing0x(str) { |
||||
if (str.startsWith('0x')) return str.substring(2);else return str; |
||||
} |
||||
|
||||
export function addTrailing0x(str) { |
||||
if (!str.startsWith('0x')) return '0x' + str;else return str; |
||||
} |
@ -0,0 +1,56 @@ |
||||
'use strict'; |
||||
|
||||
Object.defineProperty(exports, "__esModule", { |
||||
value: true |
||||
}); |
||||
exports.compress = compress; |
||||
exports.decompress = decompress; |
||||
|
||||
var _util = require('./util'); |
||||
|
||||
var util = _interopRequireWildcard(_util); |
||||
|
||||
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } |
||||
|
||||
function compress(hex) { |
||||
var base64 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; |
||||
|
||||
hex = util.removeTrailing0x(hex); |
||||
|
||||
// if base64:true, we use our own function because it results in a smaller output
|
||||
if (base64 === true) return new Buffer(hex, 'hex').toString('base64'); |
||||
|
||||
var string = ''; |
||||
while (hex.length % 4 != 0) { |
||||
// we need it to be multiple of 4
|
||||
hex = '0' + hex; |
||||
} |
||||
for (var i = 0; i < hex.length; i += 4) { |
||||
// get char from ascii code which goes from 0 to 65536
|
||||
string += String.fromCharCode(parseInt(hex.substring(i, i + 4), 16)); |
||||
} |
||||
return string; |
||||
} /** |
||||
* compress/decompress hex-strings to utf16 or base64 |
||||
* thx @juvian |
||||
* @link https://stackoverflow.com/a/40471908/3443137
|
||||
*/ |
||||
|
||||
function decompress(compressedString) { |
||||
var base64 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; |
||||
|
||||
|
||||
// if base64:true, we use our own function because it results in a smaller output
|
||||
if (base64 === true) { |
||||
var ret = new Buffer(compressedString, 'base64').toString('hex'); |
||||
return util.addTrailing0x(ret); |
||||
} |
||||
|
||||
var hex = ''; |
||||
for (var i = 0; i < compressedString.length; i++) { |
||||
// get character ascii code and convert to hexa string, adding necessary 0s
|
||||
hex += ((i == 0 ? '' : '000') + compressedString.charCodeAt(i).toString(16)).slice(-4); |
||||
} |
||||
hex = hex.toLowerCase(); |
||||
return util.addTrailing0x(hex); |
||||
} |
Loading…
Reference in new issue