Тема: таблиця в бінарному коді
Маю таблицю в бінарному коді. При відкриті текстовим редактором, наприклад gedit-ом, видно її як набір ієрогліфів. Як її можна прочитати Python, щоб зберегти в людську txt таблицю? З чого починати?
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Python → таблиця в бінарному коді
Для відправлення відповіді ви повинні увійти або зареєструватися
Маю таблицю в бінарному коді. При відкриті текстовим редактором, наприклад gedit-ом, видно її як набір ієрогліфів. Як її можна прочитати Python, щоб зберегти в людську txt таблицю? З чого починати?
скажіть, звідкіля ви ту таблицю взяли. краще викладіть її тут.
"В бінарному коді" - це не опис формату.
А так - відкриваєте в режимі "rb" і читаєте.
Ось ця таблиця http://dialectstat.wikispaces.com/file/ … _0_0_0.dat
дав колега по роботі, це mock каталог галактик. Структура така: перша лінійка - header далі блок з числами, знову рядок з header і т.д.
"В бінарному коді" - це не опис формату.
А так - відкриваєте в режимі "rb" і читаєте.
Читаю з "rb" ієрогліфи стали більш латинськими, але все-одно не тими що очікую:
xfcj\x18H\xc8\xa5CH\xdd6\xeeF\xbb\xc4\x90G\xff\xca\xf7F\x88\x1f\x15H\xb4\x95]G\xd2\x86\x18Hr\x8b\xa2G\xc3\x92\x03G\xf5\xc2\x12H0\xec\x98Cv\xb9aG\x14m\xc6G\x86\x82\x01HR}dH\xcf\xdf\x16H`\xc1`G)', '>G\x17\x13\x01H\xca\xaa\xdbG\x80/\x1cG\x80\x86\xe0Gfg\xf4G\xc9\xd5\xc2G\xc5\xb4\xf7G\xa2\x89\x97GW\xe7\x03H\xce7$H0\xbdFFY\xbc\x95F\x8a\xf9oH9\xe9\x04H\xc5\x
кидайте сюди опис формату, бо мнеможливо прочитати зі справжнього файлу "абстрактні" дані.
кидайте сюди опис формату, бо мнеможливо прочитати зі справжнього файлу "абстрактні" дані.
Що означає опис формату?
специфікація,
опис структур даних, який містять файли цього типу
специфікація,
опис структур даних, який містять файли цього типу
З того що мені казали,
перший рядок - текст header
дальше x y z - координати числа
перший рядок - текст header
Ви там бачите " текст header" чи взагалі якийсь рядок? бо я ні.
0xDADA11C7 написав:специфікація,
опис структур даних, який містять файли цього типуЗ того що мені казали,
перший рядок - текст header
дальше x y z - координати числа
Вам набрехали, там взагалі нема рядків. Просто час від часу зустрічаються символи нового рядку(10, 13), але оскільки файл бінарний, вони означають щось інше, а не новий рядок.
А судячи зі щільності файлу, він ще й заархівований чи зашифрований, а не просто бінарний.
0xDADA11C7 написав:кидайте сюди опис формату, бо мнеможливо прочитати зі справжнього файлу "абстрактні" дані.
Що означає опис формату?
Наприклад такий.
Перший байт - Кількість стовпців.
Другий - кількість байт в 1-го стовпці.
Третій - кількість байт в 2-му стовпці.
...
Ну і далі власне дані, відповідно до кількості байт в кожному стовпці.
Якщо ж у Вас немає подібного опису, то в мене підозра, що може бути опис логіки якоїсь гри і потрібно знайти коридор для обходу сторожа/боса/каменю/групового завдання/дверей в кімнату з епік шмотом/інше.
Дістав код як читати цей файл на IDL
PRO READING_SNAP, arg1, arg2
model=arg1 ;; e.g. 'LCDM'
gr_nr=arg2 ;; e.g. '092'
f_in = model+'_CoDECS_snap_'+gr_nr+'_zoom_1_0_0_0.dat'
openr,1,f_in
ntask=0
readu,1,ntask
print, 'ntask =', ntask
blockheader = 0L
for i=0,ntask-1 do begin
;; print, 'i =', i
readu,1,blockheader & print, blockheader
ptemp=fltarr(3,blockheader)
readu,1,ptemp
readu,1,blockheader & print, blockheader
if i eq 0 then begin
xhalo=fltarr(blockheader) & xhalo(*)=ptemp(0,*)
yhalo=fltarr(blockheader) & yhalo(*)=ptemp(1,*)
zhalo=fltarr(blockheader) & zhalo(*)=ptemp(2,*)
endif else begin
xtemp=fltarr(blockheader) & xtemp(*)=ptemp(0,*)
ytemp=fltarr(blockheader) & ytemp(*)=ptemp(1,*)
ztemp=fltarr(blockheader) & ztemp(*)=ptemp(2,*)
xhalo=[xhalo,xtemp]
yhalo=[yhalo,ytemp]
zhalo=[zhalo,ztemp]
endelse
Але як це зробити на Python?
Підкажіть, будь ласка, з якої сторони підходити щоб прочитати той файл?
зі сторони вивчення мови python і читання документації з IDL.
дивимося - перший байт вказує на кількість записів (заголовків) в файлі,
далі перший байт заголовку вказує на кількість зірок в поточному записі, а нижченаведений код створює в пам’яті масив чисел з рухомою комою розміром 3×blockheader
ptemp=fltarr(3,blockheader)
дивимося - перший байт вказує на кількість записів (заголовків) в файлі,
далі перший байт заголовку вказує на кількість зірок в поточному записі, а нижченаведений код створює в пам’яті масив чисел з рухомою комою розміром 3×blockheaderptemp=fltarr(3,blockheader)
Кількість зірок це ок.
Але чим розділені координати між собою, як знати де починається число з рухомою комою, а де закінчується?
ги-ги, нема там такого, кажу ж - бінарний файл. розмір значення з рухомою комою сталий - 4 байти.
ги-ги, нема там такого, кажу ж - бінарний файл. розмір значення з рухомою комою сталий - 4 байти.
Тобто значення підряд йдуть?
А чи є поняття нова стрічка в бінарному файлі?
Для відправлення відповіді ви повинні увійти або зареєструватися