Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách chuyển đổi hiệu quả số int dài sang IP tứ phân chấm trong bash

Vì bạn đã yêu cầu 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"
}

Ví dụ:

$ INET_ATON 10.2.1.255
167903743
$ INET_NTOA 167903743
10.2.1.255

Đây là phiên bản sẽ hoạt động trong bất kỳ shell nào có nguồn gốc từ Bourne mà tôi đã thử bao gồm dash, ksh, một số phiên bản của Bash, BusyBox ash, zsh (với -y ) và thậm chí cả Vỏ Bourne Gia truyền .

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. Ranh giới từ trong MySQL REGEXP [[:<:]] [[:>:]] và dấu ngoặc kép

  2. sự cố mysql_insert_id khi chèn dữ liệu đồng thời

  3. AttributeError:module 'mysql' không có thuộc tính 'connector'

  4. LoadError khi cố gắng sử dụng MySQL với Ruby on Rails trong Windows, RubyMine IDE

  5. Cách chuyển đổi cơ sở dữ liệu MySQL sang mã hóa UTF-8