/* 十进制转二进制: ToBase(a, 2) 十进制转十六进制: ToBase(a, 16) 十进制转八进制: ToBase(a, 8) 十进制转n进制: ToBase(a, n) 十六进制转n进制: ToBase(a, n) ,a为16进制数,以“0X”开头 */ ; 自带的10进制转16进制 MsgBox % Format("0x{:X}", 16777215) ; 带0x的大写 => 0xFFFFFF MsgBox % Format("{:x}", 16777215) ; 不带0x的小写 => ffffff MsgBox % Format("0x{:X}", 255) ; RGB红色 => 0xFF MsgBox % Format("{:#x}", 255) ; RGB红色 => 0xff c:=255 MsgBox % Format("0x{:X}", ((c&0xFF)<<16)|(c&0xFF00)|((c&0xFF0000)>>16)) ; RGB红色补全写法 => 0xFF0000 ; MsgBox % StrReplace(Format("{:-8}", Format("0x{:X}", 255)), " ", 0) ; RGB红色补全写法 => 0xFF0000【会变BGR】 ; 16进制+0直接转换成10进制输出 WinGet, Hwnd, ID, ahk_class HH Parent MsgBox % Hwnd+0 MsgBox % ToBase(0x800080,10) ; => 8388736 MsgBox % ToBase(0xFF,10) ; => 255 MsgBox % ToBase(255,16) ; => FF ToBase(n, b) { return (n < b ? "" : ToBase(n//b,b)) . ((d:=Mod(n,b)) < 10 ? d : Chr(d+55)) } ; 二进制字符串转换为十六进制【去掉Format函数为十进制】 bin := "1111100110111110" MsgBox % Format("0x{:X}", DllCall("msvcrt\_wcstoui64", "Str", bin, "Ptr", 0, "Int", 2, "Cdecl Int64")) ; => 0xF9BE ; DllCall("msvcrt\_i64tow", "UInt64", 0xF9BE, "Ptr", buf := Buffer(128), "Int", 2, "Cdecl") ; MsgBox StrGet(buf) ; V2写法
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)