ip地址字符串与十六进制数值转换一例

光庆 6月前 635

import console; 
strIP="192.168.10.11"

import wsock
var a = string.format("%X", ..raw.swap(wsock.sockaddrParse(strIP).sin_addr.S_un.S_addr))
console.dump("ip地址转十六进制:",a)

var b = wsock.inet_ntoa(..raw.swap(eval("0x"++a)))
console.dump("十六进制转ip地址:",b)

console.pause(true);

最新回复 (6)
  • playboyeve 6月前
    0 2
    来点,自编程序http或ftp下,精美程序升级界面及功能
  • lioncn 6月前
    0 3

    // 不用调用 wsock 库。

    import console; 
    var ip="192.168.10.11"
    ip2hex = function(ip){
    	ips= string.split(ip, ".")
    	var hex=""
    	for(k,v in ips){	
    		hex = hex ++ string.upper(string.format("%02x", v ))
    	}
    	return hex
    }
    
    console.log(ip2hex(ip))
    console.pause(true);

  • mndsoft 6月前
    0 4
    %02X 就是大写, hex = hex ++ string.format("%02X", v ) . 请问 如何倒序,即显示:0B0AA8C0 ,要字符数一样
  • aardio 6月前
    0 5
    这个一般应用在什么场景呀?
  • lioncn 6月前
    0 6
    import console; 
    
    var ip="192.168.10.11"
    
    /*
    功能:转换 IP 地址为 16 进制格式
    参数:
    	ip:  字符串,如 “10.1.2.3”
    	reverse:bool,控制是否逆序转换
    返回值:
    	转换后的 16 进制格式	
    */
    ip2hex = function(ip, reverse=false){
        ips= string.split(ip, ".")
        var hex=""
        if reverse{
            for(i=#ips;1;-1){
            	hex = hex ++ string.format("%02X", ips[i] )        
            }        
        }
        else{
        	for(k,v in ips){    
            	hex = hex ++ string.format("%02X", v )
        	}
        }
        return hex
    }
    
    console.log(ip2hex(ip)) 
    console.log(ip2hex(ip, true))
    
    console.pause(true);

    是这种效果吗?

  • mndsoft 6月前
    1 7
    回复真快,非常感谢,是这样的效果。顺带说一下5楼朋友的问一般什么场景,这个一般我是用于工控设备配置,和硬件交互。需要存在设备里的。 回头把写完一个小工具把里面用到的相关转码基础知识发上来,希望这个坛子大热起来,让更多初学者能感知aardio的魅力!
返回