$name = Binary("测试测试测试")为什么只能读出一半的二进制数据?
$name = Binary("测试测试测试")
MsgBox(64, "Title", $name)
如上面,实际上应该显示 0xB2E2CAD4 B2E2CAD4 B2E2CAD4,但是运行后只显示 0xB2E2CAD4B2E2
而当 $name = Binary("测试测试")时,运行后只显示 0xB2E2CAD4
就是只获得一半中文字符的十六进制数据
用 $name = stringtoBinary("测试测试") 也是同样结果
但是当要读取的是字母或数字就显示正确的结果
这是Bug吗?还是我哪里错了?
有人遇到同样问题吗?
[ 本帖最后由 thackit 于 2008-11-7 12:51 编辑 ] 对汉字支持不好 那要怎么才能获得完整的?各位达人想个思路。。。。:face (30):
$name = stringtoBinary("测试测试测试", 2)
MsgBox(64, "Title", $name)
[ 本帖最后由 liongodmien 于 2008-11-6 22:03 编辑 ] 这个是 Unicode 数据,我把帮助里的脚本都测试过了。
不过还是多谢了楼上两位,尤其是 liongodmien ,不愧有奖章,:face (37): 既然,你要用ANSI的数据,那给个方法:
$T = "测试测试测试"
$name = Binary($T&$T)
MsgBox(64, "Title", $name)
哈哈,楼上的很逗。
不过还是不行啊,得到的是“测试测测试测”,这是不对滴。。。。:face (13):
昨晚太困了,回去睡觉了。 开心就好!下面的代码我没怎么特别测试,你尽可能的测试吧!
Dim $T = "这是一个很好的例子!you see", $S
$C = StringLen($T)
For $i = 1 To $C
$M = StringMid($T, $i, 1)
For $K = 32 To 126
If $M = Chr($K) Then
$S &= BinaryMid(Binary($M), 1)
ContinueLoop 2
EndIf
Next
$S &= BinaryMid(Binary($M&$M), 1)
Next
$S = StringReplace($S, '0x', '')
$S = Binary('0x'&$S)
MsgBox(64, "Title", $S)
FileOpen('1.txt', 18)
FileWrite('1.txt', $S)
原帖由 thackit 于 2008-11-7 07:39 发表 http://www.autoitx.com/images/common/back.gif
哈哈,楼上的很逗。
不过还是不行啊,得到的是“测试测测试测”,这是不对滴。。。。:face (13):
昨晚太困了,回去睡觉了。
不知道你为什么说我专门对中文处理的那个'复写'办法不行?!有没写文件出来试过?我可是试过的!只不过这个不能对付中英文全在一起,而且英文字符又是单数的...
$T = "测试测试测试"
$name = Binary($T&$T)
MsgBox(64, "Title", $name)
FileOpen('1.txt', 18)
FileWrite('1.txt', $name)
$name = "测试测试测试"
Dim $namea, $nameb = "0x"
For $i = 1 To StringLen($name)
$namea = Binary(StringMid($name, $i, 1) & Chr(32))
$nameb = $nameb & StringTrimLeft ($namea,2)
Next
MsgBox(64, "Title", $nameb)
[ 本帖最后由 即即 于 2008-11-7 11:03 编辑 ] 原帖由 即即 于 2008-11-7 10:06 发表 http://www.autoitx.com/images/common/back.gif
$name = "测试测试测试"
Dim $namea, $nameb
For $i = 1 To StringLen($name)
$namea = Binary(StringMid($name, $i, 1) & Chr(32))
$nameb = $nameb & $namea
Next
MsgBox(64, "Title", $nameb)
嗯,楼主的办法是另辟蹊径,想法不错! 修改了下:
Func String2Binary($sString)
Dim $BinaryString
For $i = 1 To StringLen($sString)
$M = StringMid($sString, $i, 1)
For $K = 32 To 126
If $M = Chr($K) Then
$BinaryString &= BinaryMid(Binary($M), 1)
ContinueLoop 2
EndIf
Next
$BinaryString &= BinaryMid(Binary($M & $M), 1)
Next
$BinaryString = StringReplace($BinaryString, '0x', '')
$BinaryString = Binary('0x' & $BinaryString)
Return $BinaryString
EndFunc ;==>String2Binary
9日再修正结果:
Func String2Binary($sString)
Dim $BinaryString
For $i = 1 To StringLen($sString)
$STR = StringMid($sString, $i, 1)
If String(Binary($STR)) > 0xFF Then Return Binary($sString)
If String(Binary($STR)) < 0x80 Then
$BinaryString &= String(Binary($STR))
Else
$BinaryString &= String(Binary($STR & $STR))
EndIf
Next
$BinaryString = StringReplace($BinaryString, '0x', '')
Return Binary('0x' & $BinaryString)
EndFunc ;==>String2Binary
[ 本帖最后由 liongodmien 于 2008-11-9 11:56 编辑 ] 上午有事来迟了,这么热闹啊。
看8楼的时候还在想要自己搞个函数才行啊,没想到看到最后,楼上的给出了,哈哈,开心。
感谢各位的帮助!
所谓抛砖引玉就是这么干的。。。。:face (33):
7#那段话是我的错,早上看的匆忙没测试,想当然了,没想到结果是正确的。在此向 liongodmien 道歉。
有组织的感觉真好:face (36):
页:
[1]