И причем здесь пиво Сокол (FPU)? Код (Text): char buf[16]; long ip32 = 1234567890; sprintf(buf, "%u.%u.%u.%u", (ip32>>24) & 0xff, (ip32>>16) & 0xff, (ip32>>8) & 0xff, ip32&0xff);
Лучше сделать свою функцию она работать будет быстрее. алгоритм: X = Y1 * 256 ^ 0 + Y2 * 256 ^ 1 + Y3 * 256 ^ 2 + Y4 * 256 ^3 где Yx это число не превышающее один байт (ip адрес Y4.Y3.Y2.Y1) Пример: 81.171.151.8 = 1358954496 + 11206656 + 38656 + 8 = 1370199816
Y4 = int (X / 256 ^ 3) Y3 = int ((X - Y4) / 256 ^ 2) Y2 = int ((X - Y4 - Y3) / 256) Y1 = X - Y4 - Y3 - Y2
Nimnul А можно немножко проще: Код (Text): mov al,byte [X+0] mov byte [Y1],al mov al,byte [X+1] mov byte [Y2],al mov al,byte [X+2] mov byte [Y3],al mov al,byte [X+3] mov byte [Y4],al Ну а дальше уже байт в строку гнать.
Для тех кто не знает... т.к. автор топика написал что знает как переводить, но так тема мне кажется более закрытой))
The Svin Есть такая, но в интернете её точно не найдёшь: имеется она только у закрытых кракеских групп, и они не стремятся её распространять. Мне она досталась по о-о-очень большому блату, поэтому выложить я её не смогую, уж извините. Замечу только, что она выполняет ещё ряд весьма полезных фнкций (вычитание, умножение и пр.)
The Svin Как правило 32битный адрес преобразуют в ИП с точками (и обратно) при работе с сокетами. Поэтому наиболее логично юзать именно короткую ф-цию inet_ntoa(), чем всякие громоздкие формулы, т.к. ws2_32.lib уже инклудиться..
Какие формулы? Там четыре байта двойного слова IP в десятичном представлении, даже лидирующие нули убирать не нужно.