LINUX.ORG.RU

История изменений

Исправление pathfinder, (текущая версия) :

Напишите код, преобразующий 32-битное целочисленное представление ip-адреса в строковое.

Вот тут ничего не сказано о формате этого целочисленного представления. Но будем считать что у нас эээ... big-endian порядок следования четырех. Ну выразимся так. Первое число адреса самый старший байт адреса.

Я бы написал как-то так:

std::string Ip2String(uint32_t ip_addr)
{
  uint32_t addr1 = (ip_addr >> 24) & 0xff;
  uint32_t addr2 = (ip_addr >> 16) & 0xff;
  uint32_t addr3 = (ip_addr >>  8) & 0xff;
  uint32_t addr4 = ip_addr & 0xff;

  char _buf[20];
  snprintf(_buf,sizeof(buf),"%d.%d.%d.%d",(int)addr1,(int)addr2,(int)addr3,(int)addr4);
  return std::string(_buf);
}

Предполагается, что за скоростью мы тут не гонимся.

Исправление pathfinder, :

Напишите код, преобразующий 32-битное целочисленное представление ip-адреса в строковое.

Вот тут ничего не сказано о формате этого целочисленного представления. Но будем считать что у нас эээ... big-endian порядок следования четырех. Ну выразимся так. Первое число адреса самый старший байт адреса.

Я бы написал как-то так:

std::string Ip2String(uint32_t ip_addr)
{
  uint32_t addr1 = (ip_addr >> 24) & 0xff;
  uint32_t addr2 = (ip_addr >> 16) & 0xff;
  uint32_t addr3 = (ip_addr >>  8) & 0xff;
  uint32_t addr4 = ip_addr & 0xff;

  char _buf[20];
  snprintf(_buf,sizeof(buf),"%d.%d.%d.%d",(int)add1,(int)addr2,(int)addr3,(int)addr4);
  return std::string(_buf);
}

Предполагается, что за скоростью мы тут не гонимся.

Исходная версия pathfinder, :

Напишите код, преобразующий 32-битное целочисленное представление ip-адреса в строковое.

Вот тут ничего не сказано о формате этого целочисленного представления. Но будем считать что у нас эээ... big-endian порядок следования четырех. Ну выразимся так. Первое число адреса самый старший байт адреса.

Я бы написал как-то так:

std::string Ip2String(uint32_t ip_addr)
{
  uint32_t addr1 = (ip_addr >> 24) & 0xff;
  uint32_t addr2 = (ip_addr >> 16) & 0xff;
  uint32_t addr3 = (ip_addr >>  8) & 0xff;
  uint32_t addr4 = ip_addr & 0xff;

  char _buf[20];
  snprintf(_buf,sizeof(buf),"%d.%d.%d.%d",add1,addr2,addr3,addr4);
  return std::string(_buf);
}

Предполагается, что за скоростью мы тут не гонимся.