导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

如何改变内存映射的数据

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浮点型的数据 再映射到新的文件 改怎么弄呀 各位 很急 在线等
...全文
26 点赞 收藏 3
写回复
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
谁帮帮我呀 这个问题困扰我 很久了
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

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