如何改变内存映射的数据

mayuhongthebest 2010-08-14 11:04:18
HANDLE hFileMapping1 = CreateFileMapping(hp,NULL,PAGE_READWRITE,0,2504,NULL);
CloseHandle(hp);
__int64 qwFileOffset = 0;
LPVOID pRawFile =(LPVOID)MapViewOfFile( hFileMapping1,FILE_MAP_ALL_ACCESS,(DWORD)(qwFileOffset >> 32),(DWORD)(qwFileOffset & 0xFFFFFFFF),2504);

我映射原文件2504个字节 但是我要把这2504个字节的pc浮点型数据 转化成IBM浮点型的数据 再映射到新的文件 改怎么弄呀 各位 很急 在线等
...全文
46 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mayuhongthebest 2010-08-14
  • 打赏
  • 举报
回复
pc转IBM浮点型的公式
for(int i=0;i<m_Sample_Num;i++)
{
BufSampleData[i]=PC2IBM(BufSample[i]);
}

unsigned int CSgyFileMergeDlg:: PC2IBM(float SampleData)
{
int sign;
sign = (SampleData<0?1:0);
int exp;
float input_bak;
SampleData = SampleData * pow( -1.0,sign);
exp=0;
input_bak = SampleData;
if (SampleData>0)
{
if ((int)SampleData>0)
{
exp++;
while((int)input_bak/16>0)
{
exp++;
input_bak=input_bak/16;
}
}
else
{
while((int)input_bak*16==0)
{
exp--;
input_bak=input_bak*16;
}
exp++;
}
}
int e;
e = (exp +64);
double fm=SampleData*pow( 16.0,-exp);
int fmant=(int)(fm*pow(2.0,24.0));
unsigned int result;
result=(sign<<31)|(e<<24)|fmant;
swap(&result);
return result;
}

void CSgyFileMergeDlg:: swap(unsigned int *b)
{
unsigned char *p =(unsigned char *)b;
unsigned char temp=p[0];
p[0]=p[3];
p[3]=temp;

unsigned char temp1=p[1];
p[1]=p[2];
p[2]=temp1;
}
fisi793419093 2010-08-14
  • 打赏
  • 举报
回复
这个问题,我也遇到了,也不会啊!
mayuhongthebest 2010-08-14
  • 打赏
  • 举报
回复
谁帮帮我呀 这个问题困扰我 很久了

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧