Tema: Re: SQL: ipdec-ipv4
Autorius: Jornada Del Muerto
Data: 2011-02-01 17:00:28
Neigiamas jis del to kad vyriausias dword bitas = 1, kas yra kaip zenklo flag, jeigu ta lauka unsigned padarius ar kazkokio didesnio skaiciaus (aka bigint - nezinau kaip tiksliai orakle) neturetu neigiami eiti daugiau, nebent irasomi neigiami is kliento puses.
Visumoje, ka visi manau ir taip zino IPv4 IP adresas tai Int32 aka 32 bit reiksme, kur kiekvienas DWORD baitas yra viena is IP adreso X.X.X.X reiksmiu, jei kisama i Int32 dydzio duomenu lauka tai ji reikia butinai unsigned padaryt kad nesamoniu negauti su kuo kolega ir susidure.
Elementariai jei yra orakle kazkas tokio kaip vieno tipo konversija i kita tai ja reiketu ir panaudot, MSSQL atrodytu taip:
CAST(laukas_ar_kintamasis_su_zenklu AS bigint) -- bigint priima didesnes reiksmes zymiai
Va cia grubus islyginimas i be zenklo skaiciu ant C# gal pades suprast:
for (uint ui = 0x7FFFFFFF; ui < 0xFFFFFFFF; ui++)
{
long i = (long)(int)ui;
long dif = (long)((long)ui - (long)i);
long corrected = (i + dif);
Debug.Print (
"ui: " + ui.ToString () +
", i: " + i.ToString () +
", diff: " + dif+
", corr: "+ corrected.ToString());
}
Kaip sakant galima ir pridet 4294967296 prie skaiciaus ir gaut be zenklo ;) bet jis nebus tada jau tuo tipu, ar tai pries tai teks priskirt kad ir su zenklu bet didesniam tipui.
P.S. Oraklo nezinau, gal eina ten daug paprasciau padaryt.
Sekmes!
JDM.
"Liofka" <liofkanews@safe-mail.net> wrote in message news:ii8hca$p6p$1@trimpas.omnitel.net...
>
> "rr" <rr@nospam.lt> wrote in message
> news:Xns9E7A668AC2987rrnospamlt@194.176.32.141...
>>> Oracle klausimas: kaip neigiamą sveikąjį skaičių paversti v.4 ip adresu?
>>
>> Kažkaip ne taip?
>> http://stackoverflow.com/questions/1084413/ip-address-stored-as-decimal-pl-
>> sql-to-display-as-dotted-quad
>>
> Šitą bandžiau. Veikia puikiai su teigiamais adresais. Mano neigiami.
>
>