这是使用C++的模版特化实现多个类型同一个函数完成高地位转换。
#include <iostream>
template <class T> T transform(T& b)
{
return b;
}
template <> int transform<int>(int& b)//4字节
{
return (((b & 0xff000000) >> 24)|((b & 0x00ff0000) >> 8)|\
((b & 0x0000ff00) << 8)|((b & 0x000000ff) << 24));
}
template <> unsigned int transform<unsigned int>(unsigned int& b)//4字节
{
return (((b & 0xff000000) >> 24)|((b & 0x00ff0000) >> 8)|\
((b & 0x0000ff00) << 8)|((b & 0x000000ff) << 24));
}
template <> short int transform<short int>(short int& b)//2字节
{
return (((b&0xff00)>>8)|((b&0x00ff)<<8));
}
template <> unsigned short int transform<unsigned short int>(unsigned short int& b)//2字节
{
return (((b&0xff00)>>8)|((b&0x00ff)<<8));
}
template <> long int transform<long int>(long int& b)//4字节
{
return (((b & 0xff000000) >> 24)|((b & 0x00ff0000) >> 8)|\
((b & 0x0000ff00) << 8)|((b & 0x000000ff) << 24));
}
template <> unsigned long int transform<unsigned long int>(unsigned long int& b)//4字节
{
return (((b & 0xff000000) >> 24)|((b & 0x00ff0000) >> 8)|\
((b & 0x0000ff00) << 8)|((b & 0x000000ff) << 24));
}
template <> float transform<float>(float& b)//4字节
{
float tmp;
char* tmp1=(char*)&tmp;
char* tmp2=(char*)&b;
memcpy(tmp1,tmp2+3,1);
memcpy(tmp1+1,tmp2+2,1);
memcpy(tmp1+2,tmp2+1,1);
memcpy(tmp1+3,tmp2,1);
return tmp;
}
template <> double transform<double>(double& b)//8字节
{
double tmp;
char* tmp1=(char*)&tmp;
char* tmp2=(char*)&b;
memcpy(tmp1,tmp2+7,1);
memcpy(tmp1+1,tmp2+6,1);
memcpy(tmp1+2,tmp2+5,1);
memcpy(tmp1+3,tmp2+4,1);
memcpy(tmp1+4,tmp2+3,1);
memcpy(tmp1+5,tmp2+2,1);
memcpy(tmp1+6,tmp2+1,1);
memcpy(tmp1+7,tmp2,1);
return tmp;
}
template <> long double transform<long double>(long double& b)//8字节
{
long double tmp;
char* tmp1=(char*)&tmp;
char* tmp2=(char*)&b;
memcpy(tmp1,tmp2+7,1);
memcpy(tmp1+1,tmp2+6,1);
memcpy(tmp1+2,tmp2+5,1);
memcpy(tmp1+3,tmp2+4,1);
memcpy(tmp1+4,tmp2+3,1);
memcpy(tmp1+5,tmp2+2,1);
memcpy(tmp1+6,tmp2+1,1);
memcpy(tmp1+7,tmp2,1);
return tmp;
}
int main()
{
return 0;
}
分享到:
相关推荐
长期以来一个令人困惑的问题是离散函数如何转换为连续函数。 最近,该问题已得到解决,但本文将介绍转换过程的一些细节。 从两组数据中建立范围为-1和1的100,000个值的相关系数,从这些相关系数值创建直方图,称为...
C++常用库函数 缓冲区操作函数、字符分类函数、数据转换函数、数学函数、输入和输出函数、进程控制函数、字符串操作函数 C++常用库函数 缓冲区操作函数、字符分类函数、数据转换函数、数学函数、输入和输出函数、...
VB 数制转换函数 VB 数制转换函数 VB 数制转换函数
关于sql时间函数格式转换比较全的转换函数和举例说明,整理之网络。
ORACLE常用数值函数、转换函数,用例简单,非常实用。
Oracle SQL 函数进行BLOB转换Varchar2
2个进制转换函数-精品源代码 2个进制转换函数-精品源代码
基于MFC开发的高低字节转换工具,用于读取TXT文档中的数据并对对应的高低字节进行互换转化
asp中有关字符编码转换的几个函数. asp中中文乱码是个难点,希望这几个函数对你有帮助
全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt...
VB类型转换函数,各种数据类型的相互转换函数。
oracle 的一些常用类型转换函数讲解。
百度坐标,84坐标,gjc02坐标系之间的转换函数
涵盖了大量的数据转换函数,可以轻松的运用于vhdl的大量的编程中!
常用的时间转换函数,让你不在为时间的转换而烦恼!
把c++的结构体、数据类型、函数定义转换成对应的c#表达,很强大。
c++格式转换函数 c++格式转换函数 c++格式转换函数
SQL字符转换函数 取子串函数 去空格函数
VB-各种数制转换(非函数实现-用于算法和自定义函数研究)
很方便的转换公开函数,用于DLL劫持时使用。