UNPKG

layaair2-cmd

Version:

layaair version 2 toolkit

47 lines (43 loc) 1.17 kB
/* * Copyright (C) 2017, hapjs.org. All rights reserved. */ "use strict"; var Hex = {}, decoder; Hex.decode = function (a) { var i; if (decoder === undefined) { var hex = "0123456789ABCDEF", ignore = " \f\n\r\t\xA0\u2028\u2029"; decoder = []; for (i = 0; i < 16; ++i) { decoder[hex.charAt(i)] = i; }hex = hex.toLowerCase(); for (i = 10; i < 16; ++i) { decoder[hex.charAt(i)] = i; }for (i = 0; i < ignore.length; ++i) { decoder[ignore.charAt(i)] = -1; } } var out = [], bits = 0, char_count = 0; for (i = 0; i < a.length; ++i) { var c = a.charAt(i); if (c == '=') break; c = decoder[c]; if (c == -1) continue; if (c === undefined) throw 'Illegal character at offset ' + i; bits |= c; if (++char_count >= 2) { out[out.length] = bits; bits = 0; char_count = 0; } else { bits <<= 4; } } if (char_count) throw "Hex encoding incomplete: 4 bits missing"; return out; }; module.exports = Hex;