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

Chuyển đổi địa chỉ IP (IPv4) itno thành Số nguyên trong R

Bạn không hoàn toàn cụ thể về chuyển đổi mà bạn muốn, vì vậy tôi đã nhân các giá trị thập phân với giá trị mà tôi nghĩ có thể phù hợp (nghĩ rằng các mục có ba chữ số thực sự là tương đương chữ số trong các số "cơ số 256" sau đó được hiển thị lại trong cơ số 10). Nếu bạn muốn thứ tự của các vị trí được đảo ngược, như tôi đã đề xuất ở những nơi khác, bạn sẽ đảo ngược việc lập chỉ mục 'vals' trong cả hai giải pháp

 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

(Thông thường, thực hành CNTT tốt hơn là chỉ định những gì bạn nghĩ là câu trả lời chính xác để việc kiểm tra có thể được thực hiện. Nhận xét của Bertelson ở trên sẽ nhanh hơn và mặc nhiên sử dụng 1000, 1000 ^ 2 và 1000 ^ 3 làm hệ số.)

Tôi đang tìm cách đơn giản hóa mã nhưng sợ rằng cần phải sử dụng Reduce("+", ...) có thể làm cho nó phức tạp hơn. Bạn không thể sử dụng sum bởi vì nó không được vectơ hóa.

 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. Làm cách nào để dỡ một bảng trên RedShift xuống một tệp CSV?

  2. MySQL chọn nhiều id cùng lúc với php

  3. Phép nhân ma trận trong python và mysql

  4. nodeJS trả về giá trị từ callback

  5. Nhận kết quả bằng cách so sánh hai bảng với một cột giống hệt nhau