Einfache Rechenaufgabe in AutoIt -> aus ID eine IP errechnen, Lösungsweg bekannt aber nicht AutoIt

  • Hi,

    eine ID wird aus der IP nach folgender Formel berechnet:

    IP = A.B.C.D / ID = A + 256*B + 256*256*C + 256*256*256*D

    Der Weg zurück wäre:


    INTEGER ID/256^3 ist das letzte Oktett.

    INTEGER (ID-$LETZTE_OKTETT*256^3)/256^2 ist das vorletzte Oktett

    INTEGER (ID-$LETZTE_OKTETT*256^3-$VORLETZTE_OKTETT*256^2)/256 ist das zweite Oktett

    Der "schäbige Rest" ist das erste Oktett.

    Das habe ich versucht in ein Skript umzuwandeln, komme aber immer wieder zum falschen Ergebnis. Woran liegt das? Mit muligen Grüssen Jan


    [autoit]

    $ID=2020902490
    Dim $aIP[5], $IQ=256

    [/autoit][autoit][/autoit][autoit]

    $aIP[4]=Int($ID/(256^3))
    $aIP[3]=Int($ID - $aIP[4])/(256^2)
    $aIP[2]=Int($ID - $aIP[4] - $aIP[3])/256
    $aIP[1]=$ID - $aIP[4] - $aIP[3] - $aIP[2]

    [/autoit][autoit][/autoit][autoit]

    MsgBox(4096, '', $aIP[1] & '.' & $aIP[2] & '.' & $aIP[3] & '.' & $aIP[4]); 90.134.116.120

    [/autoit]
  • [autoit]

    $ID=2020902490
    Dim $aIP[5], $IQ=256

    [/autoit][autoit][/autoit][autoit]

    $aIP[4]= Int($ID/(256^3))
    MsgBox(4096, '', Int($ID/(256^3)), 2)
    $aIP[3]= Int(($ID - ($aIP[4]*(256^3)))/(256^2))
    MsgBox(4096, '', Int(($ID - ($aIP[4]*(256^3)))/(256^2)) , 4)
    $aIP[2]= Int(($ID - ($aIP[4]*(256^3)) - ($aIP[3]*(256^2)))/256)
    $aIP[1]=$ID - ($aIP[4]*(256^3)) - ($aIP[3]*(256^2)) - ($aIP[2]*256)

    [/autoit][autoit][/autoit][autoit]

    MsgBox(4096, '', $aIP[1] & '. ' & $aIP[2] & '. ' & $aIP[3] & '. ' & $aIP[4]); 90.134.116.120

    [/autoit]

    Jan

    • Offizieller Beitrag

    Das geht auch etwas kürzer:

    [autoit]


    $ID=2020902490
    Dim $aIP[5]

    [/autoit][autoit][/autoit][autoit]

    $aIP[4] = Int($ID/(256^3))
    $ID = Mod($ID,(256^3))
    $aIP[3] = Int($ID/(256^2))
    $ID = Mod($ID,(256^2))
    $aIP[2] = Int($ID/256)
    $aIP[1] = Mod($ID,256)

    [/autoit][autoit][/autoit][autoit]

    MsgBox(4096, '', $aIP[1] & '. ' & $aIP[2] & '. ' & $aIP[3] & '. ' & $aIP[4]); 90.134.116.120

    [/autoit]