php 数字转ip,PHP MAC地址数字互转

Publish: April 20, 2016

Category: 代码分享

No Comments

数据库中,存储数据千万级别的搜索中,数字类型会比字符串类型快很多,在设计数据库的时候经常页将一些可转换的字段用数字来标示,比如IP和MAC.

PHP中提供了原生的ip地址和数字互转函数即ip2long()和long2ip().int ip2long ( string $ip_address );

string long2ip ( string $proper_address );

MAC地址和数字的互转, mac是十六进制标示,去掉分隔符之后正好是一个十六进制数,可以直接转换为十进制数,同样十进制数转换成mac时,不够12位的在前面补零./**

* mac合法性校验 兼容大小写和(:-)

* @param $mac

* @return bool

*/

function mac_check($mac)

{

if (empty($mac)) {

return FALSE;

}

$mac_reg = '/^([0-9a-fA-F]{2})((([:][0-9a-fA-F]{2}){5})|(([-][0-9a-fA-F]{2}){5}))$/i';

return preg_match($mac_reg, $mac)==1?TRUE:FALSE;

}

/**

* mac 转化为数字表示

* @param $mac_str

* @return bool|number

*/

function mac_to_int($mac_str)

{

if(!mac_check($mac_str)) return FALSE;

$filter_mac = strtolower(preg_replace('/[:-]/', '', $mac_str));

$mac_int = hexdec($filter_mac);

if(is_numeric($mac_int))

return $mac_int;

else

return FALSE;

}

/**

* 数字转换为标准mac

* @param $mac_int

* @param string $chain ('-', ':')

* @return bool|string

*/

function int_to_mac($mac_int, $chain='-')

{

$max_value = 281474976710655;

$min_value = 0;

if(!is_numeric($mac_int) || $mac_int > $max_value || $mac_int < $min_value) return FALSE;

$chain_list = array('-', ':');

if(!in_array($chain, $chain_list)) return FALSE;

$mac_hex = dechex($mac_int);

$mac_str = strval($mac_hex);

$mac_hex_len = strlen($mac_hex);

if($mac_hex_len < 12)

{

$add_len = 12 - $mac_hex_len;

$add_str = '';

while ($add_len--)

{

$add_str .= '0';

}

$mac_str = $add_str . $mac_str;

}

$mac_arr = str_split($mac_str, 2);

$mac_full_str = implode($chain, $mac_arr);

if(!mac_check($mac_full_str))

return FALSE;

else

return strtoupper($mac_full_str);

}

demo示例:echo mac_to_int('ac-2d-2a-de-32-1d');

// 输出 189309992710685

echo int_to_mac(189309992710685);

//输出 AC-2D-2A-DE-32-1D[尚无相关文章]

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值