Показать сообщение отдельно
  #4 (permalink)  
Старый 11.11.2016, 02:48
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Сообщение от KosBeg Посмотреть сообщение
что можете посоветовать?
Ничего, ибо конечная задача не ясна.

Вам надо каким-то образом распарсить некий бинарный формат. Чтоб написать алгоритм парсинга нужна спека. Либо софт который с ним работает и много примеров для реверс-инжиниринга.
Тут есть только заведомо нерабочий алгоритм(зачем он нужен - если он не верен то?) и единственный набор данных.

В итоге нам предлагается каким-то образом реверс-инжинирить эту кучку байт на основе гаданий на кофейной гуще.

Мы конечно можем это сделать, но никаких гарантий, что на ином наборе данных всё не сломается.

Поскольку здесь у нас форум по js вот вам js вариант:
var inputArray = ...;
/*
  inputArray получается путём замены фигурных скобок на квадратные:
    unsigned char ida_chars[] = { 0x00, ... , 0x00 }
      ->
    var inputArray =  [ 0x00, ... , 0x00 ]
*/

function parse(array){
  var out = [];
  for(var i = 0; i < array.length; i += 0x48 ){
    if(array[i] == 0xAB){
      out.push( ['REGFLAG_DELAY', array[i+4].toString(), []] ); 
    }else if(array[i] == 0xAA){
      out.push( ['REGFLAG_END_OF_TABLE', array[i+4], []] ); 
      break;
    }else{
      out.push( [array[i], array[i+4], array.slice(i+5, i+5 + array[i+4]) ] ); 
    }
  }
  return out;
}

function display(array){
  function toHEX(num){
    if(typeof num !== 'number') return num;
    if(num === 0) return '0x00';  
    if(num > 15) return '0x' + num.toString(16).toUpperCase();
    return '0x0' + num.toString(16).toUpperCase();
  }
  return 'static struct LCM_setting_table lcm_initialization_setting[] = {\n' + 
    array.map(
      command => {
        command[2] = '{' + command[2].map(toHEX).join(', ') + '}';
        return '    { ' + command.map(toHEX).join(', ') + '}'
      }
    ).join(',\n') + '\n}';
}


console.log(
  display(
    parse( inputArray )
  )
)
__________________
29375, 35

Последний раз редактировалось Aetae, 11.11.2016 в 02:52.
Ответить с цитированием