1.char数组转成dword
一般来说,直接移位拼装即可。但是我理解,按照你的描述,貌似你的DWORD长度超过了cpu的寄存器的长度。如果是后者的话,不妨这样做:
struct _dword{
word lo; // 假设cpu寄存器长度16位,word长度16位
word hi;
};
struct _dword a;
char b[4] = {0x12, 0x34, 0x56, 0x78};
a.lo = b[0] & 0x00FF + (b[1] & 0x00FF) << 8; // “与”操作将字符转为16位word,移位拼装。
a.hi = b[2] & 0x00FF + (b[3] & 0x00FF) << 8;
大概就是这样的。除此之外,还需要考虑尾序的问题。
对于更高位数的操作,基本原理是一样的。
2.char数组转成dword
一般来说,直接移位拼装即可。
但是我理解,按照你的描述,貌似你的DWORD长度超过了cpu的寄存器的长度。如果是后者的话,不妨这样做:struct _dword{ word lo; // 假设cpu寄存器长度16位,word长度16位 word hi;};struct _dword a;char b[4] = {0x12, 0x34, 0x56, 0x78};a.lo = b[0] & 0x00FF + (b[1] & 0x00FF) < 8;="">
a.hi = b[2] & 0x00FF + (b[3] & 0x00FF) <>
对于更高位数的操作,基本原理是一样的。
3.字符串和DWORD类型之间如何相互转换
再把 dword转为字符串的也发出来void HashToString(char *strHash,SHA1 hash,int iSize) //hash转成字符串{uchar *p=(uchar *)&hash;char tmp[3]={0};for (int j=0;j
4.字符串和DWORD类型之间如何相互转换
再把 dword转为字符串的也发出来
void HashToString(char *strHash,SHA1 hash,int iSize) //hash转成字符串
{
uchar *p=(uchar *)&hash;
char tmp[3]={0};
for (int j=0;j{
sprintf(tmp,"%02X",(uchar)p[j]);
//OutputDebugString(tmp);
strcat(strHash,tmp);
}
//OutputDebugString(strHash);
}
转载请注明出处51数据库 » char转dword