请问各位,我从一个(不知道存储结构)二进制文件中读出数据后,如何转换成可理解的数据。
二进制文件内容如下,已知:存储数据是点的坐标,一个数值如235。
我根据它的二进制内容(如下)推测一个点是用四个字节存储,但是不知道为什么,所有后两个字节是0。从一个点变到另外一个点,如从00 51到FF 50 只是头两个字节在变,请问高人,这是怎么回事,如何读出这个点是多少??谢谢,高分。
2D 51 00 00
27 51 00 00
1A 51 00 00
10 51 00 00
03 51 00 00
01 51 00 00
00 51 00 00
FF 50 00 00
FA 50 00 00
F9 50 00 00
E8 50 00 00
E3 50 00 00
E0 50 00 00
二进制文件内容如下,已知:存储数据是点的坐标,一个数值如235。
我根据它的二进制内容(如下)推测一个点是用四个字节存储,但是不知道为什么,所有后两个字节是0。从一个点变到另外一个点,如从00 51到FF 50 只是头两个字节在变,请问高人,这是怎么回事,如何读出这个点是多少??谢谢,高分。
2D 51 00 00
27 51 00 00
1A 51 00 00
10 51 00 00
03 51 00 00
01 51 00 00
00 51 00 00
FF 50 00 00
FA 50 00 00
F9 50 00 00
E8 50 00 00
E3 50 00 00
E0 50 00 00
解决方案 »
- 关于在createprocess中长路径问题
- TreeView1控件的节点可以拖动吗?
- 怎样在类模块中使用自定义类型(在线等待)
- activeskin控件问题,急,请帮帮忙。。
- microsoft activex data objects 2.5 libray引用出错
- 请问Installshiled professinal 和 installshield express 有何区别啊
- 请教各路大侠,一定送分,我很着急
- 谁帮编一个文件截取器!
- 在多行的TextBox中,如果内容变动了,如何使光标移到最后一行??
- 怎样改变msgbox消息框的字体大小!
- 在VSS里,如何让vb窗口文件(frm)让多个用户同时check out?谢谢
- substr的问题
你可用 &H0051或
VAL("&H" & "0051")
求的其10进制的数值.
至于后两字节为何是00 00
这或许是两维坐标,其X或Y轴的值为0.
我试一下,但是“你可用 &H0051或 VAL("&H" & "0051") 求的其10进制的数值. ”,不太明白,能否告诉我具体如何实现。根据此文件数据的实际应用,可以知道点是在-50到300之间波动,即可能是点,211.45,具体小数位是多少我也不知道,只知道肯定是所有点有固定的小数位数。也可能是把211.45换成整数21145来存储。谢谢
即你的第一行数就是:&H2D+&H5100
或者 直接 &H512D
十进制就是 20781
Dim sj As Integer
Dim sj1 As Integer
Private Sub Command1_Click()
sj = &H51
Text1 = sj
sj1 = Val("&H" & "0051")
Text2 = sj1
End SubPrivate Sub Command2_Click()
sj = &H2D51
Text1 = sj
sj1 = Val("&H" & "2D51")
Text2 = sj1
End Sub
3楼的低位在前高位在后,需依据数据组成的约定而定。小数点位数还的根据数据结构而定,你需对全部数据分析来判断。
Option ExplicitType Point
x As Integer
y As Integer
End TypeSub Main()
Dim hFile As Integer
Dim p As Point
Debug.Assert Len(p) = 4
hFile = FreeFile
Open "C:\Temp\1.dat" For Random Access Read As #hFile Len = Len(p)
While Not EOF(hFile)
Get #hFile, , p
Debug.Print HexMem2(p.x) & HexMem2(p.y), p.x / 100, p.y / 100
Wend
Close #hFile
End SubFunction HexMem2(ByVal v As Integer) As String
HexMem2 = Right$("0" & Hex(v And &HFF), 2) & " " & _
Right$("0" & Hex((v And &HFF00) \ &H100), 2) & " "
End Function
仅仅是数字,不是汉字或其它符号。我推测两个字节表示一个数值。
zdingyun 的方法我试了,但是和实际应用中的数值差的太远,(如2.678E-41),我试试ayalicer 和Tiger_Zhao的方法。
2D 51 00 00 = 20781->207.81
27 51 00 00 = 20775->207.75
1A 51 00 00 = 20762->207.62
10 51 00 00 = 20752->207.52
03 51 00 00 = 20739->207.39
01 51 00 00 = 20737->207.37
00 51 00 00 = 20736->207.36
FF 50 00 00 = 20735->207.35
FA 50 00 00 = 20730->207.30
F9 50 00 00 = 20729->207.29
E8 50 00 00 = 20712->207.12
E3 50 00 00 = 20707->207.07
E0 50 00 00 = 20704->207.04