mirror of
https://github.com/gchq/CyberChef.git
synced 2024-11-16 17:08:31 +01:00
49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
|
/**
|
||
|
* Binary Code Decimal resources.
|
||
|
*
|
||
|
* @author n1474335 [n1474335@gmail.com]
|
||
|
* @copyright Crown Copyright 2017
|
||
|
* @license Apache-2.0
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* BCD encoding schemes.
|
||
|
*/
|
||
|
export const ENCODING_SCHEME = [
|
||
|
"8 4 2 1",
|
||
|
"7 4 2 1",
|
||
|
"4 2 2 1",
|
||
|
"2 4 2 1",
|
||
|
"8 4 -2 -1",
|
||
|
"Excess-3",
|
||
|
"IBM 8 4 2 1",
|
||
|
];
|
||
|
|
||
|
/**
|
||
|
* Lookup table for the binary value of each digit representation.
|
||
|
*
|
||
|
* I wrote a very nice algorithm to generate 8 4 2 1 encoding programatically,
|
||
|
* but unfortunately it's much easier (if less elegant) to use lookup tables
|
||
|
* when supporting multiple encoding schemes.
|
||
|
*
|
||
|
* "Practicality beats purity" - PEP 20
|
||
|
*
|
||
|
* In some schemes it is possible to represent the same value in multiple ways.
|
||
|
* For instance, in 4 2 2 1 encoding, 0100 and 0010 both represent 2. Support
|
||
|
* has not yet been added for this.
|
||
|
*/
|
||
|
export const ENCODING_LOOKUP = {
|
||
|
"8 4 2 1": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
||
|
"7 4 2 1": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10],
|
||
|
"4 2 2 1": [0, 1, 4, 5, 8, 9, 12, 13, 14, 15],
|
||
|
"2 4 2 1": [0, 1, 2, 3, 4, 11, 12, 13, 14, 15],
|
||
|
"8 4 -2 -1": [0, 7, 6, 5, 4, 11, 10, 9, 8, 15],
|
||
|
"Excess-3": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
|
||
|
"IBM 8 4 2 1": [10, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* BCD formats.
|
||
|
*/
|
||
|
export const FORMAT = ["Nibbles", "Bytes", "Raw"];
|