【发布时间】:2010-06-03 12:46:38
【问题描述】:
我想用空格分割字节串,例如AAFF10DC,所以它变成AA FF 10 DC。
如何在 AutoIt (v3) 中做到这一点?
【问题讨论】:
我想用空格分割字节串,例如AAFF10DC,所以它变成AA FF 10 DC。
如何在 AutoIt (v3) 中做到这一点?
【问题讨论】:
我想用空格分割字节串……
使用StringRegExpReplace() 的示例:
Global Const $g_sString = 'AAFF10DC'
Global Const $g_sPattern = '(.{2})'
Global Const $g_sReplace = '$1 '
Global Const $g_sResult = StringRegExpReplace($g_sString, $g_sPattern, $g_sReplace)
ConsoleWrite($g_sResult & @CRLF)
返回AA FF 10 DC。
【讨论】:
这有点难看,但它有效:
$string = "AAFF10DC"
$strArray = StringSplit($string, "") ; No delimiter will separate all chars.
$strResult = ""
If IsEvenNumber($strArray[0]) Then
For $i = 1 to $strArray[0] Step 2
$strResult = $strResult & $strArray[$i] & $strArray[$i+1] & " "
Next
MsgBox(0, "Result", $strResult)
Else
MsgBox(0, "Result", "String does not contain an even number of characters.")
EndIf
Func IsEvenNumber($num)
Return Mod($num, 2) = 0
EndFunc
【讨论】:
Global $s_string = "AAFF10DC"
MsgBox(64, "Info", _str_bytesep($s_string))
Func _str_bytesep($s_str, $s_delim = " ")
If Not (Mod(StringLen($s_str), 2) = 0) Then Return SetError(1, 0, "")
Return StringRegExpReplace($s_str, "(..(?!\z))", "$1" & $s_delim & "")
EndFunc
这只是另一种方式。对于大量的字节数据,我不建议使用这种方法。
【讨论】: