注册 登录
编程论坛 VC++/MFC

关于字符串转换的问题!

lanriver 发布于 2010-12-12 17:29, 825 次点击
typedef struct tagA
{   
     char i;
     char j;
     int k;
}A;
A a;
C语言用二进制方式打开文件,怎样把一个十六进制0x41以二进制方式分别写给结构体的各个成员  a.i;a.j;a.k;
最好有实例,谢谢!
10 回复
#2
ml2325282010-12-12 23:30
计算机内存中的数据本来就是2进制
这个和编程没多大关系吧 不太明白

[ 本帖最后由 ml232528 于 2010-12-12 23:32 编辑 ]
#3
laoyang1032010-12-13 19:25
二进制 自己转化呀  很简单的  用个栈就可以了
#4
lanriver2010-12-13 21:13
以下是引用ml232528在2010-12-12 23:30:28的发言:

计算机内存中的数据本来就是2进制
这个和编程没多大关系吧 不太明白
呵呵,你是没弄明白我的问题。需要向结构体里的每个成员写入十六进制0x41并生成一个文件,但成员里有char型,,a.i=0x41,这里我怎样赋值给成员的问题,文件生成后,用HEdit此类的二进制查看器打开文件后,显示为:0x000000414141
#5
lanriver2010-12-13 21:15
以下是引用laoyang103在2010-12-13 19:25:27的发言:

二进制 自己转化呀  很简单的  用个栈就可以了
谢谢你的指教,由于刚接触C++还不太明白,可以给个函数或者代码?我给分数给你。
#6
smart_sun2010-12-14 09:07
#include<stdio.h>
void main()
{
 char c[16];
 int a[16][4]={0};
 int i=0,j;
 scanf("%s",c);---->>以字符串形式输入
 while(c[i])--------->>>把字符串的每一位还原为数字
  {
   if(c[i]>'0'&&c[i]<'9')
    c[i]=c[i++]-48;
   else if(c[i]>='A'&&c[i]<='Z')
    c[i]=c[i++]-55;
   else if(c[i]>='a'&&c[i]<='z')
    c[i]=c[i++]-87;
   else
   {
    puts("error\n");
    return;
   }
 }
 i=0;
 while(c[i])---》》》每一位分解为四位,注意输出顺序就可以了
{
  for(j=3;j>=0;j--)
  {
   a[i][j]=c[i]%2;
   c[i]/=2;
  }
  for(j=0;j<4;j++)
   printf("%d",a[i][j]);
  i++;
 }
}
#7
makebest2010-12-14 13:02
赋值还是一样的, 写文件的时候直接将结构写入. 从你的要求看得把 int 放到第一个位置.
#8
laoyang1032010-12-14 15:22
如果6楼的没写错   应该就可以
#9
lanriver2010-12-14 21:07
以下是引用makebest在2010-12-14 13:02:41的发言:

赋值还是一样的, 写文件的时候直接将结构写入. 从你的要求看得把 int 放到第一个位置.
呵呵,写反了,不好意思,要求错误,大体是写进去!
#10
lanriver2010-12-14 21:33
以下是引用smart_sun在2010-12-14 09:07:48的发言:

#include
谢谢!
#11
lanriver2010-12-15 22:22
以下是引用makebest在2010-12-14 13:02:41的发言:

赋值还是一样的, 写文件的时候直接将结构写入. 从你的要求看得把 int 放到第一个位置.
谢谢!问题解决了!
1