Пожалуйста. Можете ли вы помочь мне, как преобразовать целочисленное значение IP-адреса в стандартный IP-адрес?
Полученное целочисленное значение из
tmpWifiServiceNative:= TAndroidHelper.Activity.getSystemService(TJContext.JavaClass.WIFI_SERVICE);
tmpWifiManager:= TJWifiManager.Wrap((tmpWifiServiceNative as ILocalObject).GetObjectID);
tmpWifiIPAddress:= tmpWifiManager.getDhcpInfo.ipAddress //This returns integer value
Я получил значение -33436235
Какому IP-адресу это должно соответствовать?
IP-адрес 181.205.1.254.
Просто используйте эту функцию:
uses
Androidapi.Helpers,
Androidapi.JNIBridge,
Androidapi.JNI.Java.Net,
Androidapi.JNI.JavaTypes;
function ConvertIntegerIPAddressToString(AIntegerIPAddress: Integer): string;
var
IPAddress: Integer;
SystemByte: TJavaArray<Byte>;
InetAddress: JInetAddress;
begin
if (TJByteOrder.JavaClass.nativeOrder.equals(TJByteOrder.JavaClass._GetLITTLE_ENDIAN)) then
IPAddress:= TJInteger.JavaClass.reverseBytes(AIntegerIPAddress)
else
IPAddress:= AIntegerIPAddress;
SystemByte:= TJBigInteger.JavaClass.valueOf(IPAddress).toByteArray;
try
InetAddress:= TJInetAddress.JavaClass.getByAddress(SystemByte);
Result:= JStringToString(InetAddress.getHostAddress);
except
Result:= 'Convert error';
end;
end;
@KJAN Еще раз возьмите тур: вы должны принимать или голосовать за ответить вместо того, чтобы просто добавлять комментарии.
Я добавил раздел использования в свой ответ.
Не могли бы вы показать, какое целочисленное значение вы получили? любой образец