如何在AutoHotkey中实现十六进制(Hex)转Base64功能?
十六进制转Base64的AutoHotkey实现
以下代码和你提供的Python示例功能完全一致,可直接运行:
AutoHotkey v1 版本代码
; 十六进制字符串转Base64函数 HexToBase64(hexStr) { VarSetCapacity(binary, StrLen(hexStr)//2, 0) Loop % StrLen(hexStr)//2 { hexByte := SubStr(hexStr, 2*A_Index-1, 2) NumPut("UChar", "0x" . hexByte, binary, A_Index-1) } DllCall("Crypt32\CryptBinaryToString", "Ptr", &binary, "UInt", StrLen(hexStr)//2, "UInt", 1, "Ptr", 0, "UIntP", strLen) VarSetCapacity(base64Str, strLen*2, 0) DllCall("Crypt32\CryptBinaryToString", "Ptr", &binary, "UInt", StrLen(hexStr)//2, "UInt", 1, "Str", base64Str, "UIntP", strLen) return base64Str } ; 测试代码,和你的Python示例输入一致 hexStr := "10000000000002ae" b64Str := HexToBase64(hexStr) MsgBox % "转换结果:" . b64Str ; 输出结果为 EAAAAAAAAq4=,和Python代码输出一致
AutoHotkey v2 版本代码
; 十六进制字符串转Base64函数 HexToBase64(hexStr) { binaryLen := StrLen(hexStr) // 2 binary := Buffer(binaryLen, 0) Loop binaryLen { hexByte := SubStr(hexStr, 2*A_Index-1, 2) NumPut("UChar", Integer(hexByte, 16), binary, A_Index - 1) } DllCall("Crypt32\CryptBinaryToString", "Ptr", binary.Ptr, "UInt", binaryLen, "UInt", 1, "Ptr", 0, "UIntP", &strLen := 0) base64Str := StrPut("c", strLen) DllCall("Crypt32\CryptBinaryToString", "Ptr", binary.Ptr, "UInt", binaryLen, "UInt", 1, "Str", base64Str, "UIntP", strLen) return base64Str } ; 测试代码,和你的Python示例输入一致 hexStr := "10000000000002ae" b64Str := HexToBase64(hexStr) MsgBox "转换结果:" . b64Str ; 输出结果为 EAAAAAAAAq4=,和Python代码输出一致
两份代码均无需额外依赖,调用Windows系统内置API实现,转换结果和你提供的Python代码输出完全匹配
内容的提问来源于stack exchange,提问作者Mr MG
相关产品推荐
相关产品推荐

