auto 发表于 2019-6-4 09:42:48

二进制数据读取转换(高低位问题)

本帖最后由 auto 于 2019-6-4 09:46 编辑

二进制数据读取转换(高低位问题)(存储是16进制)4个字节表示Int)
例如
01000000= 1低位在前,高位在后
02000000= 2低位在前,高位在后

直接用binaryToString转换后数字是错。用dec转换也是错的 dec结果是0

顽固不化 发表于 2019-6-4 20:34:44

既然知道这个规律,把数据前后调换一下不就可以了?

顽固不化 发表于 2019-6-4 22:36:27

$a = '01000000'
$b = '02000000'
$c = '0F000000'
$d = '00001000'
$e = 'FF000000'
$f = '64636261'
$g = '440D430D420D41'
MsgBox(0, $a, Dec(_ch($a)))
MsgBox(0, $b, Dec(_ch($b)))
MsgBox(0, $c, Dec(_ch($c)))
MsgBox(0, $d, Dec(_ch($d)))
MsgBox(0, $e, Dec(_ch($e)))
MsgBox(0, $f, BinaryToString('0x' & _ch($f)))
MsgBox(0, $g, BinaryToString('0x' & _ch($g)))
Func _ch($x = '')
        $y = ''
        $z=StringLen($x)/2
        For $i = $z To 1 Step -1
                $y &= StringMid($x, $i * 2 - 1, 1)
                $y &= StringMid($x, $i * 2, 1)
        Next
        Return $y
EndFunc   ;==>_ch

auto 发表于 2019-6-5 16:44:29

顽固不化 发表于 2019-6-4 22:36


不行吧,你这个字符串操作,我那直接读取二进制代码,回我把二进制文件传上来吧
页: [1]
查看完整版本: 二进制数据读取转换(高低位问题)