Как сделать целочисленную арифметику без знака в R - PullRequest
1 голос
/ 06 октября 2019

У меня есть символьный вектор точечно-десятичного представления 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 остановится, потому что некоторые элементы не могут быть преобразованы в целое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...