netkitty
Version:
Network tools kit
28 lines (27 loc) • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Float32ToBERHex = exports.UInt64ToBERHex = exports.UInt32ToBERHex = exports.UInt16ToBERHex = exports.UInt8ToBERHex = exports.Int64ToBERHex = exports.Int32ToBERHex = exports.Int16ToBERHex = exports.Int8ToBERHex = void 0;
const NumberToHex_1 = require("./NumberToHex");
function toBERHex(rawHex) {
const hex = rawHex.padStart(rawHex.length + rawHex.length % 2, '0');
return Buffer.from(hex, 'hex')[0].toString(2).padStart(8, '0').startsWith('1') ? `00${hex}` : hex;
}
const Int8ToBERHex = (value) => toBERHex(new Uint8Array(Int8Array.from([value]).buffer)[0].toString(16));
exports.Int8ToBERHex = Int8ToBERHex;
const Int16ToBERHex = (value) => toBERHex(new Uint16Array(Int16Array.from([value]).buffer)[0].toString(16));
exports.Int16ToBERHex = Int16ToBERHex;
const Int32ToBERHex = (value) => toBERHex(new Uint32Array(Int32Array.from([value]).buffer)[0].toString(16));
exports.Int32ToBERHex = Int32ToBERHex;
const Int64ToBERHex = (value) => toBERHex(BigInt(value).toString(16));
exports.Int64ToBERHex = Int64ToBERHex;
const UInt8ToBERHex = (value) => toBERHex(value.toString(16));
exports.UInt8ToBERHex = UInt8ToBERHex;
const UInt16ToBERHex = (value) => toBERHex(value.toString(16));
exports.UInt16ToBERHex = UInt16ToBERHex;
const UInt32ToBERHex = (value) => toBERHex(value.toString(16));
exports.UInt32ToBERHex = UInt32ToBERHex;
const UInt64ToBERHex = (value) => toBERHex(BigInt(value).toString(16));
exports.UInt64ToBERHex = UInt64ToBERHex;
//Float32 precision is always 8, therefore add '08' prefix for Float32ToHex result
const Float32ToBERHex = (value) => `08${(0, NumberToHex_1.Float32ToHex)(value)}`;
exports.Float32ToBERHex = Float32ToBERHex;