mysql ip 转换证书_mysql-将IP地址(IPv4)转换为R中的整数

我一直在寻找一种用R编写函数的方法,该函数将IP地址转换为整数.

我的数据框如下所示:

total IP

626 189.14.153.147

510 67.201.11.8

509 64.22.53.140

483 180.9.85.10

403 98.8.136.126

391 64.06.187.68

我从mysql数据库导出此数据.我有一个查询,我可以在mysql中将IP地址转换为整数:

mysql> select CAST(SUBSTRING_INDEX(SUBSTRING_INDEX('75.19.168.155', '.', 1), '.', -1) << 24 AS UNSIGNED) + CAST(SUBSTRING_INDEX(SUBSTRING_INDEX('75.19.168.155', '.', 2), '.', -1) << 16 AS UNSIGNED) + CAST(SUBSTRING_INDEX(SUBSTRING_INDEX('75.19.168.155', '.', 3), '.', -1) << 8 AS UNSIGNED) + CAST(SUBSTRING_INDEX(SUBSTRING_INDEX('75.19.168.155', '.', 4), '.', -1) AS UNSIGNED) FINAL;

但我想在R中进行此转换,任何帮助都会很棒

解决方法:

您并未完全确定要进行的转换,因此我将十进制值乘以我认为合适的值(认为三位数实际上是等效的“ 256进制”数字,然后以10进制显示).如果您希望反转位置的顺序(如我在其他地方所看到的那样),则可以在两种解决方案中反转“ vals”的索引

convIP

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

(通常,更好的IT做法是指定您认为正确的答案,以便可以进行测试.Bertelson的上述评论会更快,并且隐式使用1000、1000 ^ 2和1000 ^ 3作为因素.)

我正在努力简化代码,但担心需要使用Reduce(“”,…)可能会使它更加复杂.您不能使用sum,因为它不是矢量化的.

convIP

return( Reduce("+", vals*256^(3:0))) }

> convIP(dat$IP)

[1] 5737849088 5112017 2717938944 1245449 3925902848 16449610

标签:ip,bit,ip-address,mysql,r

来源: https://codeday.me/bug/20191122/2057419.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值