У меня есть символьный вектор точечно-десятичного представления IP-адресов.
x<-c("255.0.0.0","0.0.0.1")
Я хочу преобразовать его в целое число, отсортировать и вывести в шестнадцатеричном виде.
f<-function(b){
b<-as.integer(b)
return(b[4L]+b[3L]*256L+b[2L]*256L*256L+b[1L]*256L*256L*256L)
}
x<-sapply(strsplit(x,'.',T),f)
s<-sort.list(x)
x<-as.character(as.hexmode(x[s]))
Это не будет работать, потому что ips, такие как 255.0.0.0, вызывают переполнение со знаком int при b [1L] * 256L * 256L * 256L. Если я переключу b в числовой режим, то as.hexmode остановится, потому что некоторые элементы не могут быть преобразованы в целое число.