vb 二进制数转十进制

VB_zh 2007-10-27 01:06:56
A文件是一些用二进制写的数据,我想读取A文件,并把其中的二进制数据转换成十进制写到B文件中,该怎样做?谢谢
...全文
1541 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
VB_zh 2007-10-27
  • 打赏
  • 举报
回复
说明
A文件是用二进制写的一些数据记录,打开后只能看到一些乱字符,一个字节对应一个数据,我想读每个字节的数据,并把它转换成十进制后写入B文件,以便于查看数据是否有错,再作其他处理。
zdingyun 2007-10-27
  • 打赏
  • 举报
回复
你必须了解该二进制文件的数据结构,方能按规律读出数据,然后将读得的数据转换成保存为10进制字符形式保存于文本文件。
tianhuo_soft 2007-10-27
  • 打赏
  • 举报
回复
文件是字节流,你有没有想过判断是一个二进制文件的标准是什么?ASCII码文件是什么意思?

通常我们认为文本文件可能会包含26个小写字母和26个大写字母以及10个数字字符和标点符号,还有一些换行回车、空格空白、制表符等都是看不见的控制字符,它们的ASCII码值不大于125,
但是扩展的ASCII码和UniCode宽字符导致文件类型的并不准确!(一般通过偏移取特征值)

从另一个侧面,我们可以将问题简单化,你应该意识到“写”文件时存在两种截然不同的方式,
而不是强调文件分成这两种不同的类型。所谓的“二进制文件”如果不特指那些可执行文件的话,它的内容可以是很随意的,你根据什么来解释它的那一堆乱码呢?

以二进制方式写入的文件肯定是跟具体的应用联系在一起的,比方说同样是一篇文章,用记事本和用Word编辑会生成完全不同的文件,后者生成的在前者看来是一个不可识别的二进制文件。

//在一个程序中生成一个文件
struct student {int No; char* Name; float Score;} stud;
fwrite(fp,stud,sizeof(struct student)); //生成一个二进制文件

//在另外一个程序中完成转换
fread(fp,stud,sizeof(struct student));
fprintf(fp,"%d,%s,%f\n",stud.No,stud.Name,stud.Score);

//需要注意如果不对字符串特殊编码,它在两个文件中的存储是一样的!
  • 打赏
  • 举报
回复
是数据还是字符串? 作为数据的话只有二进制 作为字符串才有二进制和十进制的区别
zdingyun 2007-10-27
  • 打赏
  • 举报
回复
用以下代码打开你的二进制文件,每次读入512字节,转换为16进制的字符号形式显示于窗体和RichTextBox控件,写入文本文件代码你可根据你的情况改写
Option Explicit
Dim a As Byte
Dim aa As String
Dim bb As String
Dim i As Integer
Dim nw As Long
'选定文件
Private Sub Command1_Click()
CommonDialog1.ShowOpen
End Sub
'每此读512字节
Private Sub Command4_Click()
Cls
Text2 = ""
bb = ""
Open CommonDialog1.FileName For Binary As #1
For i = 1 + nw To 512 + nw
nw = Seek(1)
Get #1, i, a
Text1 = a
Text1 = a
aa = Right$(Hex(a), 2)
If Len(aa) = 1 Then
aa = "0" & aa
End If
bb = bb & aa & " "
RichTextBox1 = bb
If i Mod 16 = 0 Then
Print aa

Else
Print aa; " ";
End If
Text1 = nw
Next
Close #1
End Sub
'保存到文本文件
Private Sub Command3_Click()
Open "C:\wenben.txt" For Append As #1
Print #1, Text2
Close #1
End Sub

7,763

社区成员

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

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