Avatar billede romme Nybegynder
13. marts 2003 - 21:38 Der er 2 kommentarer og
1 løsning

long2ip som ASP/VBS funktion

Jeg leder efter en funktion til ASP eller VBS der kan det samme som funktionen long2ip i PHP.
(http://www.php.net/manual/en/function.long2ip.php)
Avatar billede medions Nybegynder
13. marts 2003 - 21:57 #1
Hmm hvad gør long2ip... Prøv at fortæl med dine egne ord...

//>Rune
Avatar billede jespernaur Nybegynder
13. marts 2003 - 23:23 #2
Her er en løsning, MEN - den er rædselsfuld på grund af VB's manglende muligheder udi bit-manipulation. Hvad der sker er, at jeg konverterer proper_address (som SKAL være en long, evt fremstillet med CLng) til en hexadecimal streng, som sidenhen konverteres til de 4 decimale IP-adresse-tal 2 hexadecimale cifre ad gangen:

Function hexchr2num( chr )
  if chr >= "0" and chr <= "9" then
      hexchr2num = asc(chr) - asc("0")
  else
      hexchr2num = asc(chr) - asc("A") + 10
  end if
End Function

Function long2ip( proper_address )
  dim i
  dim str
  dim dot
  dim hexstr

  str = ""
  dot = ""

  hexstr = hex(proper_address)
  hexstr = left("00000000", 8-len(hexstr)) & hexstr
  for i = 0 to 3
      str = str & dot & _
            CStr(hexchr2num(mid(hexstr,i*2+1, 1)) * 16 + _
                hexchr2num(mid(hexstr,i*2+2, 1)))
      dot = "."
  next
  long2ip = str
End Function

Mvh
Jesper Naur
Avatar billede loukas Mester
14. marts 2003 - 00:31 #3
Et forslag. Dog ikke skrevet af mig selv ;-)

function CStrIP(ByVal anNewIP)
        Dim lsResults        ' Results To be returned
        Dim lnTemp            ' Temporary value being parsed
        Dim lnIndex            ' Position of number being parsed
        ' if pulling number from an Access Database,
        ' The variable Type "Long" ranges from -2147483648 To 2147483647
        ' You will first need To add 2147483648 to the number to parse correctly.
        ' anNewIP = anNewIP + 2147483648
        ' Parse highest numbers first
        For lnIndex = 3 To 0 Step -1
       
            ' Parse the current value For this position
            lnTemp = Int(anNewIP / (256 ^ lnIndex))
           
            ' Append the number To the final results delimited by a dot
            lsResults = lsResults & lnTemp & "."
           
            ' Remove the number that we just parsed
            anNewIP = anNewIP - (lnTemp * (256 ^ lnIndex))
           
        Next
       
        ' Cut off last dot
        lsResults = Left(lsResults, Len(lsResults) - 1)
       
        ' Return the results
        CStrIP = lnResults
       
    End function
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester