Сообщение от 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 )
)
)