如何为 AutoIt 和 PowerShell 获得相同的 Base64 编码?
我使用 Ward 的 AutoIt 机器代码算法集合 在 AutoIt 中获取字符串的 Base64 编码:
#Include "Base64.au3"
Dim $Encode = _Base64Encode("ps")
MsgBox(0, 'Base64 Encode Data', $Encode)
结果:
cHM=
PowerShell 代码获取同一字符串“ps”的 Base64 编码:
$commands = 'ps'
$bytes = [System.Text.Encoding]::Unicode.GetBytes($commands)
$encodedString = [Convert]::ToBase64String($bytes)
$encodedString
我得到的是:
cABzAA==
PowerShell 的结果是我想要什么。如何使用 AutoIt 获得相同的结果?我猜这是一个字符编码问题。
I use Ward's AutoIt Machine Code Algorithm Collection to get base64 encoding of a string in AutoIt:
#Include "Base64.au3"
Dim $Encode = _Base64Encode("ps")
MsgBox(0, 'Base64 Encode Data', $Encode)
The result:
cHM=
PowerShell code to get the base64 encoding of the same string "ps":
$commands = 'ps'
$bytes = [System.Text.Encoding]::Unicode.GetBytes($commands)
$encodedString = [Convert]::ToBase64String($bytes)
$encodedString
What I got is:
cABzAA==
The result from PowerShell is what I want. How to get the same result using AutoIt? I guess this is a character encoding issue.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
当我运行此脚本时:
我得到结果:0x70007300。基本上,这意味着有一个“70”字符(p)、一个“00”字符(nul)、一个“73”字符(s)、“00”字符。您可以使用如下函数轻松地在 AutoIt 中重新创建此行为:
结果是: cABzAA==
有点 hack 式,但我想说,如果您不需要完整的 Unicode 编码,则它优于完整的 Unicode 编码。
When I ran this script:
I get the result: 0x70007300. Basically, this means there is a '70' character (p), a '00' character (nul), a '73' character (s), '00' character. You can easily recreate this behavior in AutoIt with a function like this:
The result is: cABzAA==
Somewhat hack-ish, but I'd say it is preferred over full Unicode encoding if that's not what you will ever need.
这将给出你想要的:
This will give what you want :
使用 ASCII 编码而不是 Unicode:
Use ASCII encoding instead of Unicode: