(所以我不会让我在没有正文的情况下发表帖子,即使整个问题都在标题中)
AutoIt字符串变量是二进制安全的吗?我可以在其中安全地存储二进制数据吗?(与Python或JavaScript字符串变量不同)
发布于 2020-05-31 00:27:05
测试表明,是的,autoit字符串变量是二进制安全的,如果您这样做了
$test="";
for $i = 0 To 255
$test = $test & Chr($i);
Next
ConsoleWrite(StringLen($test));字符串将包含每个字节,但是一些内置函数不是二进制安全的,例如ConsoleWrite()将在第一个空字节上停止写入,因此添加ConsoleWrite($test);将完全不打印任何内容。我已经在这里请求了https://www.autoitscript.com/trac/autoit/ticket/3764的修复,但同时,这里是ConsoleWrite的二进制安全实现:
; binary safe ConsoleWrite() ( AutoIt's builtin ConsoleWrite() is not binary safe, it chokes if you try to write a null byte to stdout)
Func ConsoleWriteBinarySafe( Const ByRef $str)
Local $bytesWritten=0;
Local $stdoutHandle=_WinAPI_GetStdHandle(1);
Local $tBuffer = DllStructCreate("byte[" & StringLen($str) & "]");
DllStructSetData($tBuffer, 1, $str);
_WinAPI_WriteFile ( $stdoutHandle, $tBuffer, StringLen($str), $bytesWritten);
return $bytesWritten;
EndFunchttps://stackoverflow.com/questions/62092415
复制相似问题