| 
 Алгоритм переделки массива Всем привет!) Давно меня не было на форуме, но сейчас нужна ваша помощь. У меня есть такая штука в виде(говорю сразу, это не js код) https://gist.github.com/KosBeg/4c5ff...eb87cce59fd403 и его нужно "переделать" в следующий код Код: static struct LCM_setting_table lcm_initialization_setting[] = {1) один большой массив должен быть разбит на много маленьких; 2) массив имеет вид {0x00, 0x05,{0x01,0x02,0x03,0x04,0x05}}, тоесть это значит {команда, размер массива данных,{элементы массива}} елементы массива могут быть нулями, и команда тоже может быть нулем 3) имеется такой не рабочий алгоритм доставания массивов на си подобном языке Код: auto curaddr = ScreenEA(); | 
| 
 Цитата: 
 | 
| 
 и например мне не понятна что это за хрень Цитата: 
 | 
| 
 Цитата: 
 Вам надо каким-то образом распарсить некий бинарный формат. Чтоб написать алгоритм парсинга нужна спека. Либо софт который с ним работает и много примеров для реверс-инжиниринга. Тут есть только заведомо нерабочий алгоритм(зачем он нужен - если он не верен то?) и единственный набор данных. В итоге нам предлагается каким-то образом реверс-инжинирить эту кучку байт на основе гаданий на кофейной гуще. Мы конечно можем это сделать, но никаких гарантий, что на ином наборе данных всё не сломается. Поскольку здесь у нас форум по 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 )
  )
)
 | 
| 
 Цитата: 
 Вы всё верно поняли Цитата: 
 вроде так как нужно, если что допилю :yes: Цитата: 
 Цитата: 
 то что я дал - это таблица инициализации дисплея телефона(LCM таблица) на си, я её достал путём дизассемблирования(реверс-инжиринга) стокового ядра телефона при помощи IDA, но раньше я приводил её до нормального вида руками, а сейчас когда таких надо сделать достоточно много за небольшое время - захотел автоматизировать это, но ничего не получалось, написал только тот кусочек, который не совсем так как надо работает, точнее там ошибка даже не в алгоритме а в auto curaddr = ScreenEA(); этот си подобный язык для меня не знаком, по этому писал на угад, вычитал про такую штуку, а как её использовать? :lol: решил попросить помощи) Кстати, извините что так невнятно написал... Но я примерно на такое и расчитывал по этому и написал в оффтопику) | 
| Часовой пояс GMT +3, время: 08:04. |