c/c++ int,float,short 大小端转换函数

unsigned int(uint32_t)大小端转换函数

unsigned int BLEndianUint32(unsigned int value)
{
    return ((value & 0x000000FF) << 24) |  ((value & 0x0000FF00) << 8) |  ((value & 0x00FF0000) >> 8) | ((value & 0xFF000000) >> 24);
}

float大小端转换函数

由于Float类型的数据在计算中保存方法不一样, 所以对Float类型的数据做大小端转换的情况不能简单的通过宏移位来完成。

typedef union FLOAT_CONV
{
    float f;
    char c[4];
}float_conv;

float BLEndianFloat(float value)
{
    float_conv d1,d2;
    d1.f = value;
    d2.c[0] = d1.c[3];
    d2.c[1] = d1.c[2];
    d2.c[2] = d1.c[1];
    d2.c[3] = d1.c[0];
    return d2.f;
}

unsigned short大小端转换函数

unsigned short BLEndianUshort(unsigned short value)
{
    return ((value & 0x00FF) << 8 ) | ((value & 0xFF00) >> 8);
}

原文地址:https://www.cnblogs.com/xiaojianliu/p/9835865.html

时间: 2024-08-02 23:04:19

c/c++ int,float,short 大小端转换函数的相关文章

【转】[c/c++ ]字节序与大小端转换--不错

原文网址:http://blog.csdn.net/kuai0705/article/details/20841133 注明: 以下内容均为学习内容整理,记录,便于自己学习,并非完全意义上的自产,如有感到不适,请联系我 一.多字节值及字节序 1.brief 现在有一个数字 65430,这个数字在二进制的内存中一个字节无法完全存下,存储这个数字需要1个字节以上的空间.这样的值被称为多字节量(multi-byte quantity). 65430在内存中由两个字节表示:0xFF 和 0x96 ,其中

Java 大小端转换

package nlp.nlp; /** * 小端数据,Byte转换 * */ public class ByteConvert { public static void main(String[] args) { ByteConvert c = new ByteConvert(); c.Int2Bytes_LE(126); } public static final int UNICODE_LEN = 2; /** * int转换为小端byte[](高位放在高地址中) * @param iVa

C#中的Byte,String,Int,Hex之间的转换函数。

/// <summary> Convert a string of hex digits (ex: E4 CA B2) to a byte array. </summary> /// <param name="s"> The string containing the hex digits (with or without spaces). </param> /// <returns> Returns an array of

CPU大小端模式及转换

通信协议中的数据传输.数组的存储方式.数据的强制转换等这些都会牵涉到大小端问题. CPU的大端和小端模式很多地方都会用到,但还是有许多朋友不知道,今天暂且普及一下. 一.为什么会有大小端模式之分呢? 因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit. 但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的int型.另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何

Linux程序设计学习笔记----网络编程之网络数据包拆封包与字节顺序大小端

网络数据包的封包与拆包 过程如下: 将数据从一台计算机通过一定的路径发送到另一台计算机.应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示: 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据包(packet),在链路层叫做帧(frame).数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理. 上图对应两台计算机在同一网段中的情况,

【转】大小端存储模式精解

计算机系统中内存是以字节为单位进行编址的,每个地址单元都唯一的对应着1个字节(8 bit).这可以应对char类型数据的存储要求,因为char类型长度刚好是1个字节,但是有些类型的长度是超过1个字节的(字符串虽然是多字节的,但它本质是由一个个char类型组成的类似数组的结构而已),比如C/C++中,short类型一般是2个字节,int类型一般4个字节等.因此这里就存在着一个如何安排多个字节数据中各字节存放顺序的问题.正是因为不同的安排顺序导致了大端存储模式和小端存储模式的存在. 1. 概述 1.

关于字符集,编码格式,大小端的简单总结

只要你和计算机打交道,这些问题可以说是天天会遇到,但是很多人是似懂非懂, 能真正完全理解的人却不多, 下面是个人的一些理解,有错欢迎指正. 最早的计算机只支持ASCII码, 具体来说就是用1个字节(最高位为0, 没有用)表示0到127,总共128个字符, 这样就可以完全满足英语应用的要求了. 后来扩展到欧洲语系,理论上一个字节可以表示256个字符, 欧洲人就把剩余的128个字符(最高位为1)按照自己语言(法语,德语...)的要求扩充应用了起来, 好像也能满足需要. 然后又到了亚洲国家,比如中国,

1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

 1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端口号"就称为socket. 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接.socket本身有"插座"的意思,因此用来描述网络连 接的一对一关系. TCP/IP协议最早在BSD UNIX上实现,

(四十七)socket编程——socket引入、网络字节序、IP地址转换函数、sockaddr数据结构介绍

一.什么是socket socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP地址+端口号"就称为socket. 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接.socket本身有"插座"的意思,因此用来描述网络连接的一对一关系. TCP/IP协议最早在BSD UNIX上实现,为TCP/