关于读取二进制文件

rose_886886 2006-06-14 03:58:35
其中有一组数据 在 变量中可以显示 并且 当鼠标放上 可以看到
可是 数据中有一个小方框的样子 变量也可以DEBUG.PRINT

例如 变量 DIM S AS STRING *8
前3位为空 第五为像个小长方格的样子 后4位是正常数据


问题
当变量放入文本框中显示时 却是空数据......................

谁遇到过啊?................................................
...全文
275 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿牛138588 2006-06-15
  • 打赏
  • 举报
回复
狼行天下正解。你可能是没有转码
rose_886886 2006-06-15
  • 打赏
  • 举报
回复
恩  好   第一次接触到非打印字符的  概念   

学习中................................
ZOU_SEAFARER 2006-06-15
  • 打赏
  • 举报
回复
问题解决!!不是通讯问题,是显示问题!!楼主给分吧
ZOU_SEAFARER 2006-06-15
  • 打赏
  • 举报
回复
StrConv(Right(data, 7), vbUnicode)
你把改为Right(StrConv(data, vbUnicode),7)
ZOU_SEAFARER 2006-06-15
  • 打赏
  • 举报
回复
不管什么真负,你发送的都是把字符转为16进制发送的,发送的文件内容我看了!!
比如有一个是-127.1
你接受到的应该是6byte!
wxskysoft 2006-06-15
  • 打赏
  • 举报
回复
接收到的二进制数可以存到数据库中或二进制文件中,不能转为字符串。
rose_886886 2006-06-15
  • 打赏
  • 举报
回复
对  补充一下   数据有正有负   一位小数  整数为3位的  正常显示

这个问题  是针对  整数为2位的.............
rose_886886 2006-06-15
  • 打赏
  • 举报
回复
呀!!!!!!!!!!!!!真不好意思了..................

    发现我把题目写错了........  是关于  COM口接收数据的

不过 我的上边的检测程序正确啊................

of123的方法我试了  可是  数据比原来都乱了.............



原来是这么接收的    
Dim bBuffer() As Byte
Dim bChar As Byte
bBuffer = Me.MSComm1.Input
bChar = bBuffer(0)

data = data & Chr(bChar)
rose_886886 2006-06-15
  • 打赏
  • 举报
回复
呀!.......正好我今天想这么做来试试的........
既然你也这么说了    好.....     

先这么试下...............
of123 2006-06-15
  • 打赏
  • 举报
回复
不要用 String 类型变量来接收二进制文件,要用 Byte 型数组,例如 Dim binData() As Byte。

接收后:
For i = 0 To Ubound(binData)
Text1 = Text1 & Right("0" & Hex(binData(i)), 2)
Next i
rose_886886 2006-06-15
  • 打赏
  • 举报
回复
of123说的正确  我也是这么看的..............

可是  怎么解决这个问题呢.........

还望高手指点下迷津呀........................
rose_886886 2006-06-15
  • 打赏
  • 举报
回复
恩....谢谢大家给予我这个问题的关注哈................
求解中..................



StrConv(Right(data, 7), vbUnicode) '这是我的转换代码

单步调试  检测:
?data
51.7 '8 bytes
?right(data,7)
51.7 '7 bytes
?StrConv(Right(data, 7), vbUnicode)
5 1 . 7 '14 bytes


MSHFlexGrid1(intG2).TextMatrix(intR2, 4) = StrConv(Right(data, 7), vbUnicode)
赋值为空...........??????????????
of123 2006-06-15
  • 打赏
  • 举报
回复
有非可打印字符。
ZOU_SEAFARER 2006-06-15
  • 打赏
  • 举报
回复
一般我们用的就是
vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。
vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。
2个参数!
rose_886886 2006-06-15
  • 打赏
  • 举报
回复
谢谢 northwolves(狼行天下) 使我细致的学习了 STRCONV函数 虽然本题没用
谢谢 of123()         学习到非打印字符的概念
谢谢 ZOU_SEAFARER(国际海员) 提出解决问题的办法 讲解了非打印字符

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

:) :) :) :) :) :) :) :)
fj182 2006-06-14
  • 打赏
  • 举报
回复
dim strData as string * 8
dim arrData() as byte

strData="test"
arrData=strData

northwolves 2006-06-14
  • 打赏
  • 举报
回复
StrConv函数 返回索引

返回按指定类型转换的 Variant (String)。

语法

StrConv(string, conversion, LCID)

StrConv 函数的语法有下面的命名参数:

部分 说明
string 必要参数。要转换的字符串表达式。
conversion 必要参数。Integer。其值的和决定转换的类型。
LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。)


设置值

conversion 参数的设置值为:

常数 值 说明
vbUpperCase 1 将字符串文字转成大写。
vbLowerCase 2 将字符串文字转成小写。
vbProperCase 3 将字符串中每个字的开头字母转成大写。
vbWide* 4* 将字符串中单字节字符转成双字节字符。
vbNarrow* 8* 将字符串中双字节字符转成单字节字符。
vbKatakana** 16** 将字符串中平假名字符转成片假名字符。
vbHiragana** 32** 将字符串中片假名字符转成平假名字符。
vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。
vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。


*应用到远东国别。
**仅应用到日本。
注意 这些常数是由 VBA 指定的。可以在程序中使用它们来替换真正的值。其中大部分是可以组合的,例如 vbUpperCase + vbWide,互斥的常数不能组合,例如 vbUnicode + vbFromUnicode。当在不适用的国别使用常数 vbWide、vbNarrow、vbKatakana,和 vbHiragana 时,就会导致运行时错误。

下面是一些一般情况下的有效分界符:Null (Chr$(0)),水平制表符 (Chr$(9)),换行 (Chr$(10)),垂直制表符 (Chr$(11)),换页 (Chr$(12)) ,回车 (Chr$(13)),空白 (SBCS) (Chr$(32))。在 DBCS中,空白的实际值会随国家/地区而不同。

说明

在把 ANSI 格式的 Byte 数组转换为字符串时,您应该使用 StrConv 函数。当您转换 Unicode 格式的这种数组时,使用赋值语句。
rose_886886 2006-06-14
  • 打赏
  • 举报
回复
噢...........这个函数用的不是很熟练

所以还请问下  转换成什么方式的呢?.........谢谢~~~~~~~~~
northwolves 2006-06-14
  • 打赏
  • 举报
回复
STRCONV()转换一下试试

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧