结构体与字符数组相互转换
2013-06-05 22:38
323 查看
结构体与字符数组相互转换,例如:
typedef struct __STUDENT
{
int iAge;
int iYear;
int iMonth;
}STUDENT,*PSTUDENT;
结构体-->字符串数组 ,方法一
PSTUDENT st = NULL;
st = (PSTUDENT)new char[12];
memset(st,0,12);
st->iAge = 12;
st->iMonth = 14;
st->iYear = 100;
CHAR szBuf[13] = {0};
memcpy(szBuf,st,12);
delete st;
st = NULL;
结构体--->字符串数组 ,方法二
STUDENT st;
st.iAge = 12;
st.IMonth = 12;
st.iYear = 1990;
CHAR szBuf[13] = {0};
memcpy(szBuf,&st,12);
字符串数组--->结构体
PSTUDENT st1 = NULL;
st1 = (PSTUDENT)szBuf;
CString str;
str.Format("%d %d %d",st1->iAge,st1->iMonth,st1->iYear);
MessageBox(str);
问:我在写个socket发送数据包的程序,定义了一个包头和一个数据结构体!
就是不知道怎么传送这个结构体…………
答:结构体当字符数组发,总觉得如果两边体系架构不一致有可能出问题呐。
答:确实,像结构体对齐方式不同,就会出问题,要人为地控制一下了.
答:注意其中整型值的字节序处理,
通用做法都转换为网络字节序,接收端再转成本地字节序。
还有字节对齐,通常用编译指示字强制1字节对其,需要填充的地方用结构体成员显示的填充
typedef struct __STUDENT
{
int iAge;
int iYear;
int iMonth;
}STUDENT,*PSTUDENT;
结构体-->字符串数组 ,方法一
PSTUDENT st = NULL;
st = (PSTUDENT)new char[12];
memset(st,0,12);
st->iAge = 12;
st->iMonth = 14;
st->iYear = 100;
CHAR szBuf[13] = {0};
memcpy(szBuf,st,12);
delete st;
st = NULL;
结构体--->字符串数组 ,方法二
STUDENT st;
st.iAge = 12;
st.IMonth = 12;
st.iYear = 1990;
CHAR szBuf[13] = {0};
memcpy(szBuf,&st,12);
字符串数组--->结构体
PSTUDENT st1 = NULL;
st1 = (PSTUDENT)szBuf;
CString str;
str.Format("%d %d %d",st1->iAge,st1->iMonth,st1->iYear);
MessageBox(str);
问:我在写个socket发送数据包的程序,定义了一个包头和一个数据结构体!
就是不知道怎么传送这个结构体…………
答:结构体当字符数组发,总觉得如果两边体系架构不一致有可能出问题呐。
答:确实,像结构体对齐方式不同,就会出问题,要人为地控制一下了.
答:注意其中整型值的字节序处理,
通用做法都转换为网络字节序,接收端再转成本地字节序。
还有字节对齐,通常用编译指示字强制1字节对其,需要填充的地方用结构体成员显示的填充
相关文章推荐
- 字符串和字符数组的相互转换
- java中字符数组和字符串的相互转换
- 字符串和字符数组相互转换
- java中字符数组和字符串的相互转换
- byte数组和结构体相互转换
- 字符与ascii码的相互转换以及字符串和字符数组的相互转换
- 字符数组,字符串数组,字符串的相互转换
- ASCII、十六进制、字节数组、字符数组相互转换
- C++中字符数组与string的相互转换
- C#实现char字符数组与字符串相互转换的方法
- Java中字符和byte数组之间的相互转换
- C++中字符数组与string的相互转换
- 字符数组、String类、StringBuffer三者的相互转换
- C++中字符数组与string的相互转换
- Java中字符和byte数组之间的相互转换
- 字符串,字符数组,字符串数组之间的相互转换
- 字符串和字符数组的相互转换
- 字符数组、String类、StringBuffer的相互转换
- 字符串与字符数组的相互转换
- java中字符串 字符数组相互转换