请教一个socket通信的数据有关问题

请问一个socket通信的数据问题?
我定义一个数据:
struct login
{
unsigned char head,
unsigned char name[10],
unsigned char passsword[10],
}
1.如何对上面结构体STRUCT进行crc-32算法
2.如果我把上面crc-32算法保存为unsigned char name[4],是不是应该这么定义通信的数据:
struct login_ex
{
struct login loginInfo,
unsigned char crc[4]
}
是不是应该这么定义呀?有没有更好的定义方法呀?

------解决方案--------------------
具体CRC-32算法网上公开很多,你找一个用就可以了
这样定义不错
尤其是EX用的不错
表示登录信息的扩展
------解决方案--------------------
探讨
我定义一个数据:
struct login
{
unsigned char head,
unsigned char name[10],
unsigned char passsword[10],
}
1.如何对上面结构体STRUCT进行crc-32算法
2.如果我把上面crc-32算法保存为unsigned char name[4],是不是应该这么定义通信的数据:
struct l……

------解决方案--------------------
唉不懂啊~~
------解决方案--------------------
最靠谱的做法是通过协议约定最后4字节就是crc-32结果,否则如果有10种数据,就定义出20个结构体来,最不靠谱的就是有10个结构体还是完全重复含义的定义方法。
------解决方案--------------------
在协议头中定义crc32字段,位置固定,解析起来更加方便。

------解决方案--------------------
最好
#pragma pack(1)