Форум: "Потрепаться";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизПодскажите пожалуйста. правильно ли я делаю? Найти похожие ветки
← →
Ilya___ (2004-11-19 12:03) [0]Подскажите пожалуйста. правильно ли я делаю?
Мне нужно из целочисленного со знаком (Integer) получить
(Целочисленное без знака). Я написал такую функцию.
function IntIPToIPValue(const IntIP: Integer): Cardinal;
begin
Result := Low(Result) + IntIP;
end;
Правильно ли я делаю, или есть для этого какаято другая функция ?
← →
Anatoly Podgoretsky © (2004-11-19 12:11) [1]ABS
← →
DiamondShark © (2004-11-19 12:25) [2]
> Result := Low(Result) + IntIP;
Что в переводе на русский означает
Result := 0 + IntIP;
;-)
Правильно, конечно, но проще
X := Y;
где X: Cardinal, а Y: Integer.
← →
Ilya___ (2004-11-19 12:28) [3]Нет мне нужно для IP адреса из
-1073732954
должен получиться такой
3221234342
← →
Anatoly Podgoretsky © (2004-11-19 12:30) [4]DiamondShark © (19.11.04 12:25) [2]
Не так, а так Result := неизвестно что + IntIP;
← →
DiamondShark © (2004-11-19 12:34) [5]
> Ilya___ (19.11.04 12:28) [3]
> Нет мне нужно для IP адреса из
> -1073732954
> должен получиться такой
> 3221234342
var
i: Integer;
n: Cardinal;
begin
i := -1073732954;
n := Cardinal(i);
> Anatoly Podgoretsky © (19.11.04 12:30) [4]
Всё-таки, ноль.
← →
Ilya___ (2004-11-19 12:42) [6]И ещё хотел спросить.
Я получаю из IP адреса например 192.0.34.166
целочисленное со знаком -1073732954, используя
для этого свою функцию.
А может для этого нужно использовать inet_addr("192.0.34.166")?
Но тогда получается другой результат.
← →
DiamondShark © (2004-11-19 14:05) [7]
> А может для этого нужно использовать inet_addr("192.0.34.166")?
> Но тогда получается другой результат.
А справку Пушкин должен читать.
All Internet addresses are returned in IP"s network order (bytes ordered from left to right).
← →
Anatoly Podgoretsky © (2004-11-19 14:31) [8]DiamondShark © (19.11.04 12:34) [5]
Вообще то да, необратил внимание на Low, тогда естественен вопрос зачем прибавлять ноль, почему бы не написать 0+0+0+IP
← →
Megabyte-ceercop © (2004-11-19 15:01) [9]Проблемы тут с интерпритацией старшего (знакового) бита.
Замени тип переменной IntIP из integer в dWord. тогда у тя всё само собой уложится правильно.
Или создай временную переменную dWord.var
T : dWord;
begin
...
T := IntIP //тут в T окажется нужное тебе значение.
Не проверял, но теория такая.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c