Mysql
 sql >> база данни >  >> RDS >> Mysql

Как ефективно да конвертирате long int в четворен IP с точки в bash

Тъй като поискахте Bash:

INET_NTOA() { 
    local IFS=. num quad ip e
    num=$1
    for e in 3 2 1
    do
        (( quad = 256 ** e))
        (( ip[3-e] = num / quad ))
        (( num = num % quad ))
    done
    ip[3]=$num
    echo "${ip[*]}"
}

INET_ATON ()
{
    local IFS=. ip num e
    ip=($1)
    for e in 3 2 1
    do
        (( num += ip[3-e] * 256 ** e ))
    done
    (( num += ip[3] ))
    echo "$num"
}

Примери:

$ INET_ATON 10.2.1.255
167903743
$ INET_NTOA 167903743
10.2.1.255

Ето версия, която ще работи във всяка от обвивките, получени от Bourne, които опитах, включително dash, ksh, няколко версии на Bash, BusyBox ash, zsh (с -y ) и дори Heirloom Bourne Shell .

INET_NTOA() {
    num=$1
    ip=
    for e in 3 2 1
    do
        quad=`echo "256 ^ $e" | bc`
        if [ -n "$ip" ]
        then
            ip=$ip.
        fi
        ip=$ip`echo "$num / $quad" | bc`
        num=`echo "$num % $quad" | bc`
    done
    ip=$ip.$num
    echo "$ip"
}

INET_ATON ()
{
    num=0
    e=3
    saveIFS=$IFS
    IFS=.
    set -- $1
    IFS=$saveIFS
    for ip in "[email protected]"
    do
        num=`echo "$num + $ip * 256 ^ $e" | bc`
        e=`echo "$e - 1" | bc`
    done
    echo "$num"
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql Real Escape String PHP функция Добавяне на \ към My Field Entry

  2. Изберете от всички таблици

  3. ПОРЪЧАЙТЕ ПО ASC с нулеви стойности в долната част

  4. Използване на LIMIT 1 в MySQL

  5. Има ли mysql JDBC, който ще спазва fetchSize?