Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Konwertuj adres IP (IPv4) na liczbę całkowitą w R

Nie do końca określiłeś, jakiej konwersji chcesz dokonać, więc pomnożyłem wartości dziesiętne przez to, co uważałem za odpowiednie (myśląc, że trzycyfrowe pozycje były w rzeczywistości odpowiednikami cyfr w liczbach o podstawie 256, a następnie wyświetlały się ponownie w podstawie 10). Jeśli chcesz, aby kolejność lokalizacji została odwrócona, jak sugerowałem w innym miejscu, odwróciłbyś indeksowanie 'vals' w obu rozwiązaniach

 convIP <- function(IP) { vals <- read.table(text=as.character(IP), sep=".")
               return( vals[1] + 256*vals[2] + 256^2*vals[3] + 256^3*vals[4]) }

> convIP(dat$IP)
          V1
1 2476281533
2  134990147
3 2352289344
4  173345204
5 2122844258
6 1153107520

(Zwykle lepszą praktyką informatyczną jest określenie, co uważasz za poprawną odpowiedź, aby można było przeprowadzić test. Powyższy komentarz Bertelsona byłby szybszy i domyślnie używa 1000, 1000^2 i 1000^3 jako współczynników).

Próbuję uprościć kod, ale obawiam się, że trzeba użyć Reduce("+", ...) może sprawić, że będzie bardziej złożony. Nie możesz użyć sum ponieważ nie jest zwektoryzowany.

 convIP <- function(IP) { vals <- read.table(text=as.character(IP), sep=".")
                return( Reduce("+", vals*256^(3:0))) }

> convIP(dat$IP)
[1] 5737849088    5112017 2717938944    1245449 3925902848   16449610



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. licznik za każde dołączenie - optymalizacja

  2. Jak zablokować pojedynczy rząd

  3. Procedura składowana MySQL spowodowała `Niezsynchronizowane polecenia`

  4. MySQL jak uzyskać średnią wartości w określonym zakresie

  5. Wiele instrukcji select w pojedynczym zapytaniu