как декодировать номер сегмента ASCII 7 в нормальное число в JavaScript (node.js) - PullRequest
0 голосов
/ 10 декабря 2018

Input ASCII

 _  _  _  _  _  _  _  _    
 _||_|  || ||_   || | _|  |
 _||_|  ||_| _|  ||_||_   |

 _        _  _  _  _  _  _ 
 _||_|  |  | _||_ |_   ||_|
 _|  |  |  ||_  _| _|  | _|
 
 
 
 output should be 
 
387057021
341725579

У меня есть файл, содержащий 7-сегментные номера ASCII, я пытаюсь прочитать и преобразовать в нормальное число, я пробовал, ascii как вариант, но не работает.

fs.readFile('1.txt','ascii', function(err,data){
    console.log(data) //toString() doesnt work,
  }) 

1 Ответ

0 голосов
/ 10 декабря 2018

Попробуйте эту функцию, у меня отлично работает:

function asciiToNumber(input) {
    return input.
        split('\n').
        reduce(function (r, a, i) {
            a.match(/.../g).forEach(function (b, j) {
                r[j] = r[j] || [];
                r[j][i] = b;
            });
            return r;
        }, []).
        map(function (a) {
            return a.join('');
        }).
        map(function (a) {
            var bits = { 63: 0, 6: 1, 91: 2, 79: 3, 102: 4, 109: 5, 125: 6, 7: 7, 127: 8, 111: 9, 0: ' ' },
                v = '909561432'.split('').reduce(function (r, v, i) {
                    return r + ((a[i] !== ' ') << v);
                }, 0);
            return v in bits ? bits[v] : '*'; // * is an illegal character
        }).
        join('');


}
    fs.readFile("1.txt", "ascii", function(err, data) {
        data.split("\n\n").forEach(function(element) {
        //get7segment(element)
        console.log('input: \n'+element)
        console.log('output: \n'+get7segment(element))
  });
});

1.txt файл:

    _  _     _  _  _  _  _ 
  | _| _||_||_ |_   ||_||_|
  ||_  _|  | _||_|  ||_| _|

    _  _  _  _  _ 
|_||_|| ||_||_   |
  | _||_||_||_|  |
...