Demeter第一级数据为二进制文件,其非字符串类型数据是典型的多字节字段数据,按照Big Endian字节序存储。Intel的x86系列计算机在内存中采用Little Endian 表示数据,同时C++程序的数据存储顺序也是同编译平台所在cpu类型相关,因此,需要显式地将多字节数值型字段在内存中的二进制数据字迹序前后倒置,在利用memecpy函数转换成相应的真是数据类型。
求教高手,这个显式显式地将多字节数值型字段在内存中的二进制数据字迹序前后倒置,是什么意思?应该怎么处理? [
求教高手,这个显式显式地将多字节数值型字段在内存中的二进制数据字迹序前后倒置,是什么意思?应该怎么处理? [
解决方案 »
- 一个关于STL的题目求解答
- 文件头部没有编码标志,如何判断一个文本文件的编码格式?
- 怎样操纵CTab控件发送TCN_SELCHANGE通知消息
- UDP的sendto发送后为何互联网上对方机器收不到呢
- edit 控件里的\\斜杠显示成了人民币那个符号怎么回事
- 代码int * a其中a定义的一个指针变量,它也是一个指针数组吗?
- 开机时“嘀”的一声如何通过修改bios去掉
- 如何实现在对话框中,静态文字能做成超链连接
- 如何在MFC中改变或设置菜单栏背景色而不是菜单项的背景 请搞清楚!!!
- ====有关语法的问题及绘图???=====
- RegCreateKey动态载入失败问题 求指教
- 淘宝API Sign签名问题?
BYTE * B2L(BYTE *p)
{
BYTE n = p[0];
p[0] = p[3];
p[3] = n;
n= p[1];
p[1]=p[2];
p[2]=n;
return (p+4);
}
{
if (dest && src)
{
unsigned char* pData = 0;
unsigned int index = 0;
for (pData = (unsigned char*)dest + len - 1;
pData >= (unsigned char*)dest;
pData--)
{
*pData = *((unsigned char*)src + index);
index++;
}
return true;
}
return false;
}
文件比较大,如果用你的方法直接一个循环能行不?
例如:
int i;//i假设为需要处理的二进制文件长度
int a=0;
if(a!=i)
{p[a]=p[i];
a=a+1;
i=i-1;
}
BYTE buff[1024];//你的原始数据
BYTE TempV;
for(int i=0;i<1024/2;i+=2)
{
TempV=buff[i];
buff[i]=buff[i+1];
buff[i+1]=TempV;
}
就这样