Автор Тема: Прошу помочь перевести С на Perl  (Прочитано 1547 раз)

0 Пользователей и 1 Гость просматривают эту тему.

  • Гость
Прошу помочь перевести С на Perl
« : 21 Июня 2002, 15:39:07 »
Очень нужно вывести из двоичной базы данных все значения в текстовом виде на perl. Но запутался с упаковкам распаковками и смещением. Может поможете?

country_id = _seek_country(gi, 0, ipnum, 31);

short int _seek_country (GeoIP *gi, int offset, unsigned long ipnum, int depth) {
  unsigned int x[2];
  unsigned char buf[2][3];
  int i,j;

  if (depth == -1) {
    fprintf(stderr,"Error Traversing Database - Perhaps database is corrupt?\\n");
    return 0;
  }

  fseek(gi->GeoIPDatabase, (long)6 * offset, SEEK_SET);
  fread(buf,3,2,gi->GeoIPDatabase);

  for (i = 0; i < 2; ++i) {
    x = 0;
    for (j = 0; j < 3; ++j) {
      x += (buf[j] << (j * 8));
    }
  }

  if (ipnum & (1 << depth)) {
    if (x[1] >= 16776960) {
      return x[1] - COUNTRY_BEGIN;
    }
    return _seek_country(gi, x[1], ipnum, depth-1);
  } else {
    if (x[0] >= 16776960) {
      return x[0] - COUNTRY_BEGIN;
    }
    return _seek_country(gi, x[0], ipnum, depth-1);
  }
}

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28