diff options
Diffstat (limited to 'js/utils.js')
| -rw-r--r-- | js/utils.js | 156 |
1 files changed, 78 insertions, 78 deletions
diff --git a/js/utils.js b/js/utils.js index 2b9931e..361e71d 100644 --- a/js/utils.js +++ b/js/utils.js @@ -1,78 +1,78 @@ -//
-// Utility functions.
-//
-// Copyright (c) 2016 Samuel Groß
-//
-
-// Return the hexadecimal representation of the given byte.
-function hex(b) {
- return ('0' + b.toString(16)).substr(-2);
-}
-
-// Return the hexadecimal representation of the given byte array.
-function hexlify(bytes) {
- var res = [];
- for (var i = 0; i < bytes.length; i++)
- res.push(hex(bytes[i]));
-
- return res.join('');
-}
-
-// Return the binary data represented by the given hexdecimal string.
-function unhexlify(hexstr) {
- if (hexstr.length % 2 == 1)
- throw new TypeError("Invalid hex string");
-
- var bytes = new Uint8Array(hexstr.length / 2);
- for (var i = 0; i < hexstr.length; i += 2)
- bytes[i/2] = parseInt(hexstr.substr(i, 2), 16);
-
- return bytes;
-}
-
-function hexdump(data) {
- if (typeof data.BYTES_PER_ELEMENT !== 'undefined')
- data = Array.from(data);
-
- var lines = [];
- for (var i = 0; i < data.length; i += 16) {
- var chunk = data.slice(i, i+16);
- var parts = chunk.map(hex);
- if (parts.length > 8)
- parts.splice(8, 0, ' ');
- lines.push(parts.join(' '));
- }
-
- return lines.join('\n');
-}
-
-// Simplified version of the similarly named python module.
-var Struct = (function() {
- // Allocate these once to avoid unecessary heap allocations during pack/unpack operations.
- var buffer = new ArrayBuffer(8);
- var byteView = new Uint8Array(buffer);
- var uint32View = new Uint32Array(buffer);
- var float64View = new Float64Array(buffer);
-
- return {
- pack: function(type, value) {
- var view = type; // See below
- view[0] = value;
- return new Uint8Array(buffer, 0, type.BYTES_PER_ELEMENT);
- },
-
- unpack: function(type, bytes) {
- if (bytes.length !== type.BYTES_PER_ELEMENT)
- throw Error("Invalid bytearray");
-
- var view = type; // See below
- byteView.set(bytes);
- return view[0];
- },
-
- // Available types.
- int8: byteView,
- int32: uint32View,
- float64: float64View
- };
-})();
+// +// Utility functions. +// +// Copyright (c) 2016 Samuel Groß +// + +// Return the hexadecimal representation of the given byte. +function hex(b) { + return ('0' + b.toString(16)).substr(-2); +} + +// Return the hexadecimal representation of the given byte array. +function hexlify(bytes) { + var res = []; + for (var i = 0; i < bytes.length; i++) + res.push(hex(bytes[i])); + + return res.join(''); +} + +// Return the binary data represented by the given hexdecimal string. +function unhexlify(hexstr) { + if (hexstr.length % 2 == 1) + throw new TypeError("Invalid hex string"); + + var bytes = new Uint8Array(hexstr.length / 2); + for (var i = 0; i < hexstr.length; i += 2) + bytes[i/2] = parseInt(hexstr.substr(i, 2), 16); + + return bytes; +} + +function hexdump(data) { + if (typeof data.BYTES_PER_ELEMENT !== 'undefined') + data = Array.from(data); + + var lines = []; + for (var i = 0; i < data.length; i += 16) { + var chunk = data.slice(i, i+16); + var parts = chunk.map(hex); + if (parts.length > 8) + parts.splice(8, 0, ' '); + lines.push(parts.join(' ')); + } + + return lines.join('\n'); +} + +// Simplified version of the similarly named python module. +var Struct = (function() { + // Allocate these once to avoid unecessary heap allocations during pack/unpack operations. + var buffer = new ArrayBuffer(8); + var byteView = new Uint8Array(buffer); + var uint32View = new Uint32Array(buffer); + var float64View = new Float64Array(buffer); + + return { + pack: function(type, value) { + var view = type; // See below + view[0] = value; + return new Uint8Array(buffer, 0, type.BYTES_PER_ELEMENT); + }, + + unpack: function(type, bytes) { + if (bytes.length !== type.BYTES_PER_ELEMENT) + throw Error("Invalid bytearray"); + + var view = type; // See below + byteView.set(bytes); + return view[0]; + }, + + // Available types. + int8: byteView, + int32: uint32View, + float64: float64View + }; +})(); |
