16,472
社区成员
发帖
与我相关
我的任务
分享
BYTE m_abXResolution[8];
BYTE m_abYResolution[8];
BOOL GetValueRat(const SHORT tag, LONG* lpValue)
{
BOOL retCode = FALSE;
long lNumerator;
long lDenominator;
BYTE* pRational;
switch(tag)
{
case 282:
pRational = (BYTE*)&m_abXResolution;
break;
case 283:
pRational = (BYTE*)&m_abXResolution;
break;
default:
return retCode;
}
memcpy(&lNumerator, pRational, 4);
memcpy(&lDenominator,pRational + 4, 4);
*lpValue = (long)(lNumerator / lDenominator);
bRetCode = TRUE;
return bRetCode;
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
byte[] m_abXResolution = new byte[8];
byte[] m_abYResolution = new byte[8];
bool GetValueRat(short tag, out long lpValue)
{
lpValue = 0;
bool bRetCode = false;
long lNumerator;
long lDenominator;
byte[] pRational;
switch(tag)
{
case 282:
pRational = m_abXResolution;
break;
case 283:
pRational = m_abXResolution;
break;
default:
return bRetCode;
}
byte[] a = new byte[4];
Array.Copy(pRational, a, 4);
if (BitConverter.IsLittleEndian)
Array.Reverse(a);
lNumerator = BitConverter.ToInt32(a, 0);
byte[] b = new byte[4];
Array.Copy(pRational, 4, b, 0, 4);
if (BitConverter.IsLittleEndian)
Array.Reverse(b);
lDenominator = BitConverter.ToInt32(b, 0);
//memcpy(&lNumerator, pRational, 4);
//memcpy(&lDenominator,pRational + 4, 4);
lpValue = (long)(lNumerator / lDenominator);
bRetCode = true;
return bRetCode;
}
static void Main(string[] args)
{
}
}
}