![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| kosyakLA |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 16.2.2007 Репутация: нет Всего: нет |
Есть бинарник от цифровой АТС SI2000 . . . файлы AMA определенного формата . . . не подскажите как вообще вытягивать оттуда данные?
Принципы как это делается . . . мне сказали почитать про unpack . . .читал там написано что нужно использовать unpack TEMPLATE,EXPR я так понимаю EXPR - бинарные данные а TEMPLATE - это типа формат данных в бинарнике? . . . Сказали ещё что нужно читать по блокам как-то данные . . . в общем буду признателен за любую инфу!!! |
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
А по-подробнее? Шо воно вааще такоэ?
|
|||
|
||||
| nitr |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
kosyakLA, да, примерно, вы правы.
Я не видел эти файлы, но когда писал модуль для чтения "бинарного" файла (Excel v2.0), то использовал unpack.
Да... помню такое
Но это специфика BLOB-файла. Покажите что у вас получилось, и, конечно, описание формата ;) (сам файл тоже (если можно)). ;) |
||||
|
|||||
| kosyakLA |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 16.2.2007 Репутация: нет Всего: нет |
Есть бинарник от АТС SI2000 формат файла AMA . . . структура ленты такая: 7.1. Записи о вызовах Записи о вызовах состоят из фиксированной и переменной частей. Фиксированная часть записи содержит информацию о типе записи (базовый вызов, FAIS, FAU,...) и ее назначении (тарификация, PMOB, MOB, DEB,...), информацию о номере абонента, действия которого привели к созданию записи. Переменная часть записи состоит из информационных элементов, которые выбираются в зависимости от типа записи. Любая запись начинается с фиксированной части, за которой могут следовать информационные элементы переменной части записи. Положение поля Длина поля Часть записи 1 16+(от 2 до 19) Фиксированная часть для всех записей 17 m Переменная часть в зависимости от типа записи Переменная часть может содержать следующие информационные элементы: Информационный элемент Длина Тип записи Вызов FAIS FAU 100 Вызываемый номер (Called number) от 4 до 22 X 101 Номер абонента, на которого передан вызов (Call accepting party number) от 5 до 23 X (a) 102 Дата и время начала вызова (Start date and time) 9 X X X 103 Дата и время завершения вызова (End date and time) 9 X X 104 Количество тарифных импульсов (Number of charging units) 4 X X X 105 Базовая услуга (Basic service) 3 X X 106 Дополнительная услуга у инициатора вызова (Supplementary service used by calling subscriber) 2 X (b) X 107 Дополнительная услуга у вызванного абонента (Supplementary service used by called subscriber) 2 X © 108 Администрирование услуги абонентом (Subscriber’s control input) 3 X 109 Последовательность введенных символов (Dialed digits) от 3 до 32 X 110 Исходящая категория (Origin category) 2 X X X 111 Тарифное направление (Tariff direction) 3 X X X (*9*) 112 Причина безуспешного вызова (Failure cause) 2 X (d) 113 Идентификация входящей соединительной линии (Incoming trunk data) 9 X (e) 114 Идентификация исходящей соединительной линии (Outgoing trunk data) 9 X (e) (*1*) 115 Длительность вызова или использования дополнительной услуги (Call / service duration) 5 X X (f) 8 FUN559000-PCR-150 (*2*) 116 Контрольная сумма (Checksum) 4 X X X (*3*) 117 Бизнес-группа и центрекс-группа (Business and centrex group id) 6 X (g) X (g) X (g) (*4*) 118 Код доступа сети (Carrier access code) от 3 до 7 X (h) (*3*) 119 Оригинальный номер вызывающего абонента (Original calling party number) от 3 до 23 X (i) (*5*) 120 Данные о пополнении предоплаченного счета (Prepaid account recharge data) 15 X (j) (*6*) 121 Причина разъединения вызова (Call release cause) 5 X (k) X X (*6*) 122 CBNO (Charge Band Number) 5 X (l) (*7*) 123 Общий идентификатор вызова (Common Call Id) 6 X (m) (*7*) 124 Время до ответа (Durations Before Answer) 10 X (n) (*8a*) 125 VoIP–информация (VoIP Info) 5 X (o) (*8a*) 126 Количество передаваемых данных Data (Amount of transferred Data) 5 X (o) (*8*) 127 IP–адреса (IP Addresses) 4 + 4n X (o) (*10*) 128 VoIP–информация (VoIP Info) 13 X (o) (*10*) 129 Количество передаваемых данных Data (Amount of transferred Data) 25 X (k, o) 8.2.1. Фиксированная часть записи Поле Пози- ция Длина Наименование поля Формат поля 1 1 1 Идентификатор типа записи (200) bin 2 2 2 Длина записи bin 3 4 4 Индекс записи bin 4 8 4 Идентификатор вызова bin 5 12 3 F8 F7 F6 F5 F4 F3 F2 F1 bin F16 F15 F14 F13 F12 F11 F10 F9 Резерв F19 F18 F17 6 15 1 Последовательность Состояние учета стоимости bin 7 16 1 Длина кода зоны Длина списочного номера bin 8 17 n Код зоны и списочный номер абонента, действия которого инициировали создание записи BCD Мне сказали надо искать фиксированную часть, а потом всё остальное вытягивать . . . я ни разу ничем таким не занимался . . . вот и сижу уже 4 дня не могу разобраться :( . . . в нете инфы вообще нет практически |
|||
|
||||
| apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: нет Всего: 23 |
помоему это типичная структура данных сохраненная в файл, без проблем бы выдрал от туда данные(
создаешь стрктуру с полями которые в том файле имеются Открываешь файл в бинарном режиме и можно все скопом затолкать ( т.е sizeof структуры скажет программе сколько надо считать байт ) лишь бы типы данных совпали т.е считаться должно все, таким образом все поля структуры заполнятся! -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
| kosyakLA |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 16.2.2007 Репутация: нет Всего: нет |
Блина . . . можно хоть начало примера! . . . мне нужно тупо оттолкнутся от какой-то точки! |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
kosyakLA, киньте маленький кусочек этого файла, накидаем примерчик.
|
|||
|
||||
| kosyakLA |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 16.2.2007 Репутация: нет Всего: нет |
так пойдёт Это сообщение отредактировал(а) kosyakLA - 6.9.2007, 14:29 |
||||
|
|||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
отрежьте пожалуйста 500кб каким-нибудь splitteroм и приложите файл, так легче будет.
|
|||
|
||||
| apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: нет Всего: 23 |
Задача какая? Ведь надо данные вытянуть именно разложив по полочкам, значит надо очень хорошо знать устройство файла, или же предпологается такой вариант что ищем заданное поле и считываем значение.
P.S не понравился мне perl c точки зрения работы с двоичными файлами, если о том как читать бинарные данные с файла че-т можно найти, то как вносить вобще грабли. На Си с этим вообще нет проблем... Это сообщение отредактировал(а) apook - 6.9.2007, 16:31 -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
| kosyakLA |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 16.2.2007 Репутация: нет Всего: нет |
500 не получилось . . . тут же ограничение на 100кб Добавлено через 1 минуту и 50 секунд
Задача - вытянуть нужные поля из бинарника . . . т.е. поля заранее известны Присоединённый файл ( Кол-во скачиваний: 17 )
426222_bsi2k_0708010001.ama.1.fss 100,00 Kb |
||||
|
|||||
| kosyakLA |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 16.2.2007 Репутация: нет Всего: нет |
up
|
|||
|
||||
| kosyakLA |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 16.2.2007 Репутация: нет Всего: нет |
Тему можно закрывать...программу написал
|
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
kosyakLA, молодец! А рассказать точно не хотите, что у вас получилось?
|
|||
|
||||
| kosyakLA |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 16.2.2007 Репутация: нет Всего: нет |
Ну...получилось то, что хотел ) . . . выдернул все данные из бинарника |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |