DWORD dwData = ????
如何相互转换呢?
我要将一个字符串转化成DWORD类型,然后加密成一段密文,然后再解密,最后把他还原为字符串.(每4个字符加密一个密文)
请问如何互转??
昨天发了个贴子,有人说这样:
DWORD dwData = (DWORD)chData;
我当时测试了一下,发现没问题,现在我才发现,这完全错了,dwData得到的是指针地址,而不是字符串,难怪我相同的字符串每次得到的值都不一样.
好像:DWORD dwData = *(DWORD*)chData; 也不行.
13 个解决方案
#1
那你需要一个字符一个字符的进行处理,做个运算
#2
这种转换肯定是可以的
你说不行,那就是你的做法不对。
你说不行,那就是你的做法不对。
#3
能讲下如何处理么?
#4
#include <stdio.h>
typedef unsigned int DWORD;
int main()
{
char cha[]="A布武天下A";
char chb[12];
DWORD aa , i;
for( i = 0 ; i < 3 ; i++ )
{
aa=*(DWORD *)(cha+i*sizeof(DWORD));
*(DWORD *)(chb+i*sizeof(DWORD))=aa;
}
printf("%s\n" , chb);
return 0;
}
你运行看这不是可以么
#5
为什要做这种转换呢?有什么意义呢?DWORD是32位整数,任意长的字符串转过来用得有个规则吧,你也没说,难道是CRC-32
#6
LZ的想法很强大。。。
DWORD 4个字节
char chData[] = "A布武天下A" 10个字节。。
如果字符串能直接转换成DWORD,那么还需要什么压缩算法呢?
所以你可以找个压缩算法,将一个字符串压缩到4个字节中...
DWORD 4个字节
char chData[] = "A布武天下A" 10个字节。。
如果字符串能直接转换成DWORD,那么还需要什么压缩算法呢?
所以你可以找个压缩算法,将一个字符串压缩到4个字节中...
#7
呵呵,没看到一句话,用memcpy拷贝就可以了,注意DWORD参数要带&,比如&aa,字符串用ch+i*4
#8
你没看清楚,我说的是“每4个字符加密一个密文”显然,"A布武天下A"是要分组加密的
#9
这,还有点乱。。
#10
不好意思,没看清楚,那4楼的可以~
#11
恩,我刚刚就少加了个&
这样是吧:???
char chData[4] = "A布"
DWORD dwData = 0;
memcpy(&dwData, (DWORD*)chData, 4);
char chOut[4]
memcpy(chOut, (char*)&dwData, 4);
cout << chOut << endl;
#12
int i=0;
memcpy(&dw, ch 4*i, 4);
注意最好先保证字符串(strlen(ch)*sizeof(TCHAR))%4==0否则最后最好先补上\0再拷贝
memcpy(&dw, ch 4*i, 4);
注意最好先保证字符串(strlen(ch)*sizeof(TCHAR))%4==0否则最后最好先补上\0再拷贝
#13
手机不好用,多写了*sizeof(TCHAR),strlen得到的就是字节长度
#1
那你需要一个字符一个字符的进行处理,做个运算
#2
这种转换肯定是可以的
你说不行,那就是你的做法不对。
你说不行,那就是你的做法不对。
#3
能讲下如何处理么?
#4
#include <stdio.h>
typedef unsigned int DWORD;
int main()
{
char cha[]="A布武天下A";
char chb[12];
DWORD aa , i;
for( i = 0 ; i < 3 ; i++ )
{
aa=*(DWORD *)(cha+i*sizeof(DWORD));
*(DWORD *)(chb+i*sizeof(DWORD))=aa;
}
printf("%s\n" , chb);
return 0;
}
你运行看这不是可以么
#5
为什要做这种转换呢?有什么意义呢?DWORD是32位整数,任意长的字符串转过来用得有个规则吧,你也没说,难道是CRC-32
#6
LZ的想法很强大。。。
DWORD 4个字节
char chData[] = "A布武天下A" 10个字节。。
如果字符串能直接转换成DWORD,那么还需要什么压缩算法呢?
所以你可以找个压缩算法,将一个字符串压缩到4个字节中...
DWORD 4个字节
char chData[] = "A布武天下A" 10个字节。。
如果字符串能直接转换成DWORD,那么还需要什么压缩算法呢?
所以你可以找个压缩算法,将一个字符串压缩到4个字节中...
#7
呵呵,没看到一句话,用memcpy拷贝就可以了,注意DWORD参数要带&,比如&aa,字符串用ch+i*4
#8
你没看清楚,我说的是“每4个字符加密一个密文”显然,"A布武天下A"是要分组加密的
#9
这,还有点乱。。
#10
不好意思,没看清楚,那4楼的可以~
#11
恩,我刚刚就少加了个&
这样是吧:???
char chData[4] = "A布"
DWORD dwData = 0;
memcpy(&dwData, (DWORD*)chData, 4);
char chOut[4]
memcpy(chOut, (char*)&dwData, 4);
cout << chOut << endl;
#12
int i=0;
memcpy(&dw, ch 4*i, 4);
注意最好先保证字符串(strlen(ch)*sizeof(TCHAR))%4==0否则最后最好先补上\0再拷贝
memcpy(&dw, ch 4*i, 4);
注意最好先保证字符串(strlen(ch)*sizeof(TCHAR))%4==0否则最后最好先补上\0再拷贝
#13
手机不好用,多写了*sizeof(TCHAR),strlen得到的就是字节长度