`
dazhilao
  • 浏览: 245836 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

【原】高地位转换 统一一个函数完成

 
阅读更多
这是使用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;
}
分享到:
评论

相关推荐

    mysql常用坐标系转换函数.docx

    MySQL中的这两个函数——`84togcj2Lat`和`84togcj2Lon`,专门用于实现WGS84到GCJ02(也称为火星坐标系)的转换。 WGS84是全球最广泛使用的地理坐标系统,它是基于地球椭球体模型的,其中地球的平均半径约为6378.1...

    C++结构体/函数定义转换C#函数定义/结构体

    总之,从C++到C#的转换涉及类型映射、结构体布局、函数签名定义等多个方面。通过理解两种语言之间的差异,以及利用适当的工具,我们可以有效地完成这种转换。在实际操作中,还需要注意平台兼容性、异常处理、内存...

    拼音和五笔码转换函数

    这个资源包含了实现这种转换功能的数据库表和函数,用户只需正确地建立这些表和函数,并在SQL环境中执行相应的SQL语句,即可完成转换操作。 首先,我们要理解拼音和五笔码的概念。拼音是中国汉字的拉丁字母表示形式...

    自己动手写C语言float浮点数转换字符串的函数

    本篇文章将深入探讨如何自己动手编写一个C语言函数,实现`float`类型的浮点数转换为字符串的功能。首先,我们需要理解浮点数在计算机中的表示方式,以及C语言中的相关标准库函数。 浮点数在计算机中通常使用IEEE ...

    VB类型转换函数

    以上代码展示了如何使用`CBool`函数将两个变量的比较结果转换为布尔型,并根据结果输出相应的消息。 #### 六、总结 类型转换函数在VB编程中扮演着重要的角色,它们提供了强大的数据处理能力。通过合理使用这些函数...

    asp中有关字符编码转换的几个函数.

    为了完成上述转换过程,还涉及到了多个辅助函数,包括二进制到十六进制、十六进制到二进制以及二进制到十进制的转换等。这些函数的具体实现如下: 1. **二进制到十六进制 (`c2to16`)**:该函数负责将输入的二进制...

    c++ 各种数据类型的转换的小函数

    标题提到的"各种数据类型的转换的小函数"是一个实用的工具集合,方便开发者在项目中快速进行类型转换。下面我们将详细探讨C++中的数据类型转换及其应用。 1. **隐式转换(Implicit Conversion)**:这是编译器自动...

    2个进制转换函数-精品源代码 2个进制转换函数-精品源代码

    2个进制转换函数-精品源代码 2个进制转换函数-精品源代码

    Jpg和Bmp格式相互转换API函数

    3. **保存图像**:转换完成后,使用`Save`函数将新格式的图像写入到磁盘。 在实际编程中,这可能涉及到对GDI+库的深入理解,包括如何创建和管理图形上下文、位图对象,以及如何配置编码器参数。另外,有时为了提高...

    pb调用外部函数进行字符集转换.zip

    在PB中,你可以创建一个External DataWindow或者使用DLLCall函数来调用这些外部函数,传递需要转换的字符串作为参数,返回转换后的结果。 在实际应用中,确保正确处理异常情况,比如非法字符或编码不完整的情况。...

    c语言gbk、utf8转换编码表及函数

    - 通常,从GBK转UTF-8需要将每个GBK编码的双字节序列转换为对应的Unicode码点,然后根据UTF-8的规则编码。 - 反之,从UTF-8转GBK则需要解析UTF-8编码的字节序列,找到对应的Unicode码点,再转换成GBK编码。 5. **...

    c语言字符串与数字转换函数

    C语言中提供了多种字符串与数字转换函数,以下是常用的几个函数: 1. atof() 函数:将字符串转换成浮点型数 atof() 函数的定义在stdlib.h头文件中,函数原型为:double atof(const char *nptr); atof() 函数会...

    ExcelVBA字符串转换函数[文].pdf

    Excel VBA 字符串转换函数 Excel VBA 提供了多种字符串转换函数,用于对字符串进行操作和转换。这些函数可以帮助开发者快速地对字符串进行处理和转换。 1. 字符串函数 Trim(string) 函数用于去掉字符串左右两端的...

    VB6.0 UTF-8转换GB2312函数

    在这个场景下,我们通常需要编写自定义函数来完成这种转换。 以下是一个简单的VB6.0函数示例,用于将UTF-8编码的字符串转换为GB2312编码: ```vb Function Utf8ToGb2312(ByVal utf8Str As String) As String Dim ...

    php编码转换常用函数

    php编码转换常用函数 UTF-8 转GB编码 GB转UTF-8编码 Unicode转utf8

    oracle函数大全分析函数,聚合函数,转换函数,日期型函数,字符型函数,数值型函数,其他函数.docx

    Oracle 函数大全是对 Oracle 数据库中各种函数的总结和分类,包括分析函数、聚合函数、转换函数、日期型函数、字符型函数、数值型函数和其他函数等。 一、分析函数 Oracle 分析函数是 Oracle 数据库中的一种强大...

    ASCII码字符相互转换函数

    总的来说,ASCII码字符转换函数是编程中处理文本数据的基础工具,无论是在低级别的系统编程还是在高级别的应用程序开发中都有其重要地位。了解并熟练使用这些函数,对于理解和处理任何涉及字符编码的问题都是至关...

    简繁体转换函数ASP.rar

    在ASP中,这种转换通常通过创建自定义函数来完成,这些函数会根据预定义的字符映射表进行匹配,将简体或繁体字符替换为相应的另一种形式。这种列举方式的转换方法虽然效率可能相对较低,但对于小规模的文本转换,它...

    TIA博途S7通用函数库LGF(包含数据类型转换+数据处理等)+使用说明(英文).rar

    库中的函数块主要涉及数据处理、类型转换、数学运算等多个领域,帮助工程师高效地完成复杂任务。 二、数据类型转换 在PLC编程中,不同的任务可能需要不同数据类型的变量,如BOOL、BYTE、WORD、DWORD、REAL等。LGF库...

    PB大写函数

    标题中的“PB大写函数”指的是在PowerBuilder(简称PB)编程环境中,用于将字符串转换为大写字母的特定函数。这些函数对于数据处理、文本格式化和比较操作至关重要,尤其是在处理用户输入或者进行数据库查询时,确保...

Global site tag (gtag.js) - Google Analytics