也许是我没有理解楼主的意思.
;十六进制字符串转ASCII测试
#INCLUDE <ARRAY.AU3>
$Hex="FFFEFDFCFBFA9998979695FFFF"
;~ $Hex=""
;~ For $i = 255 To 1 Step -1
;~ $Hex=$Hex & Hex($i,2)
;~ Next
;~ MsgBox(0,"10","<[" & $Hex & "]> len=" & StringLen($Hex) & @CRLF & "<[" & BinaryToString("0x" & $Hex,1) & "]> len=" & StringLen(BinaryToString("0x" & $Hex,1)) & @CRLF & "<[" & StringTrimLeft(Binary(BinaryToString("0x" & $Hex,1)),2) & "]> len=" & StringLen(StringTrimLeft(Binary(BinaryToString("0x" & $Hex,1)),2)))
Local $ARRAY[4][6]
$ARRAY[0][0]="原始数据:FFFEFDFCFBFA9998979695FFFF"
$ARRAY[0][1]=$Hex
$ARRAY[0][2]=Binary("0x"&$Hex)
$ARRAY[0][3]=BinaryToString(Binary("0x"&$Hex))
$ARRAY[1][0]="原始数据:FFFEFDFCFBFA9998979695FFFF"
$ARRAY[1][1]="$Hex(字符形式)长度:"&StringLen($Hex)
$ARRAY[1][2]="二进制长度:"&BinaryLen("0x"&$Hex)
$ARRAY[1][3]="转字符串后长度:"&StringLen(BinaryToString(Binary("0x"&$Hex)))
$ARRAY[2][0]="Wchar"
$ARRAY[3][0]="Byte"
$Str=BinaryToString("0x" & $Hex,1)
;StringLen将每两个高位ASCII码当做中文字符计算个数。
$SecN=1
$tBuffer = DllStructCreate("wchar[" & 512*$SecN & "]")
DllStructSetData($tBuffer, 1, StringToBinary($Str))
$tBuffer1 = DllStructCreate("byte[" & 512*$SecN & "]")
DllStructSetData($tBuffer1, 1, $Str)
$ARRAY[2][1]="数据结构大小: " & DllStructGetSize($tBuffer)
$ARRAY[2][2]="数据结构指针: " & DllStructGetPtr($tBuffer)
$ARRAY[2][3]="结构中数据:" & DllStructGetData($tBuffer, 1)
$ARRAY[2][4]="结构中数据字符串:" & BinaryToString(DllStructGetData($tBuffer, 1))
$ARRAY[2][5]="结构字串长度: " & StringLen(BinaryToString(DllStructGetData($tBuffer, 1)))
$ARRAY[3][1]="数据结构大小: " & DllStructGetSize($tBuffer1)
$ARRAY[3][2]="数据结构指针: " & DllStructGetPtr($tBuffer1)
$ARRAY[3][3]="结构中数据:" & DllStructGetData($tBuffer1, 1)
$ARRAY[3][4]="结构中数据字符串:" & BinaryToString(DllStructGetData($tBuffer1, 1))
$ARRAY[3][5]="结构字串长度: " & StringLen(BinaryToString(DllStructGetData($tBuffer1, 1)))
_ArrayDisplay($ARRAY)
;然后用下面函数写入磁盘,这里为防误写磁盘注释掉
;_WinAPI_WriteFile($hDisk, DllStructGetPtr($tBuffer), 512*$SecN, $nBytes)
|