问题一:
int a=30;
BYTE buf;
buf = a;
结果在buf的内存中的值会自动变成1E,而我想让它的值还保持为30,该怎么做?
如果是常数的话就可以在前面加0x,但是a是变量,所以不知道怎么解决,等..... 问题二:
BYTE *V1_Normaludp;
...
V1_Normaludp获得数据并且数据长度大于512
...
BYTE *V1_Tempudp= new BYTE(512);
我想把V1_Normaludp里的数据以512为单位分割并分别存储到V1_Tempudp里面,应该怎么做?
谢谢,在线等!
int a=30;
BYTE buf;
buf = a;
结果在buf的内存中的值会自动变成1E,而我想让它的值还保持为30,该怎么做?
如果是常数的话就可以在前面加0x,但是a是变量,所以不知道怎么解决,等..... 问题二:
BYTE *V1_Normaludp;
...
V1_Normaludp获得数据并且数据长度大于512
...
BYTE *V1_Tempudp= new BYTE(512);
我想把V1_Normaludp里的数据以512为单位分割并分别存储到V1_Tempudp里面,应该怎么做?
谢谢,在线等!
2、memcpy(V1_Tempudp, V1_Normaludp, 512);
memcpy(V1_Tempudp, V1_Normaludp + 512, 512);
...........
------------------------------------
有没有简单点的方法?
memcpy(V1_Tempudp, V1_Normaludp + 512, 512);
..................................................有没有什么方法可以memcpy一次之后就把V1_Normaludp前512的数据清空,这样每次都用
memcpy(V1_Tempudp, V1_Normaludp, 512);就可以了,
还有怎么知道V1_Normaludp 数据已经拷贝到结尾了呢?有没有什么方法可以得到BYTE数据的长度的函数呢?
...
V1_Normaludp获得数据并且数据长度大于512
...
BYTE *V1_Tempudp= new BYTE(512);
========================
BYTE *V1_Tempudp= new BYTE[512]; //new 出错了吧?
int i=0;
while(..) //如果V1_Normaludp还有数据没有处理,进行循环
{
memcpy(V1_Tempudp, V1_Normaludp+512*i, 512);
... //处理 V1_Tempudp 中的512字节数据
i++;
}
memcpy(V1_Tempudp, V1_Normaludp, 512);就可以了,
==========================
这个想法不合适,
你可以用 memmove 进行操作,
但是需要缓存保存原来的内容,然后移动, 繁琐,
不如上面给的 用一个 i 记录位置。
还有怎么知道V1_Normaludp 数据已经拷贝到结尾了呢?有没有什么方法可以得到BYTE数据的长度的函数呢?
========
得在 V1_Normaludp 末尾增加一个标记,
比如 char * 的字符串终结符
比如这个 30,
你输出的时候 %d 就是 30, %x 就是 1E,
这个进制只是表现上的东西,
在内存中都是 2 进制的。
V1_Normaludp前512的数据清空: V1_Normaludp += 512;
...
V1_Normaludp获得数据并且数据长度大于512
...
BYTE *V1_Tempudp= new BYTE(512);
========================
BYTE *V1_Tempudp= new BYTE[512]; //new 出错了吧?
int i=0;
while(..) //如果V1_Normaludp还有数据没有处理,进行循环
{
memcpy(V1_Tempudp, V1_Normaludp+512*i, 512);
... //处理 V1_Tempudp 中的512字节数据
i++;
}
======================================
BYTE *V1_Tempudp= new BYTE(512);和BYTE *V1_Tempudp= new BYTE[512];
的区别是什么?
memcpy(V1_Tempudp, V1_Normaludp,sizeof(V1_Tempudp))
2.[],()是一样的.
int i =0;char szBin[13]=""; //存放二进制字符串
CString aaa,b;
sscanf(szX, "%x", &i); //将十六进制字符串转换成整型。
aaa.Format("%d",i);
MessageBox(aaa);
itoa(i, szBin, 2); //将整型转换成二进制字符串。
MessageBox(szBin);
itoa(i, szBin, 8); //将整型转换成8进制字符串。
MessageBox(szBin);
其他类似方法就可以转换