首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 大小转换(基于ByteBuffer)

图00 Big-Endian(左)and little-endian(右) 大小的基础知识: 小 ( little-endian):低位字节在前,高位字节在后。...即在所有的平台上,如Mac、 PC、 UNIX等等运行JAVA,都不用考虑大小的问题。...麻烦的是不同语言开发的程序进行数据交换,如笔者最近的项目,二进制文件是由C生成的,通过redis 消息通道以Json格式发过来,而C语言默认是小模式,就涉及到大小转换。...开心呀 32位16进制的 0x45679812在内存中的存储(大小模式)如下图(作者【CoderBaby】: JAVA代码实现:基于ByteBuffer(可通过Order来设置大端或者小,默认为大端...— Big-Endian),代码实现如下图(支持网络端口—2字节及4字节的int转换;同时包括了网络端口0 ~ 65535的解析): /** * 将小bytes数据转化为大端数据

3K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    利用gcc的预定义宏和内置函数(Built-in Functions)实现大小判断和大小数据转换

    对于涉及跨平台开发的项目,就可能会遇到数据大小的问题,其实就是一个数字在内存中的字节序的问题,判断当前系统是大小有现成的例子,自己实现转换代码也非常方便,网上有好多不用多说。...今天要说的是gcc本身已经提供了大小的判断和数据转换的函数,真的没必要自己写。...gcc预定义宏判断大小(Endian) 先看看这个文章:查看gcc的默认宏定义命令(点击打开链接) 这个文章告诉你如何获取gcc默认的宏定义,在这些宏定义中就有大小模式的预定义宏__BYTE_ORDER...gcc内置函数进行大小转换 gcc提供了不少有用的内置函数(Built-in Functions),这些函数说明可以在gcc的网站上找到 6.58 Other Built-in Functions..._bswap16,_bswap32,_bswap64三个函数分别提供了16位,32位,64位数字的字节反转功能,正好可以用来实现16,32,64位数字的大小转换

    1.6K20

    Linux一句命令之判断大小

    笔者在开发Linux应用程序时,由于判断大小序的问题,使用的方法是用C语言判断,方法是可以判断得到系统是什么序,但是太麻烦了。...笔者是比较懒的人,不想写那么多代码,想一句命令就解决序判断的问题。 想了想,通过理解序的背后原理,使用Shell命令来判断序的问题。原来方法还是挺多的。笔者系统序为小序模式。...方法一 echo -n I | od -o | head -n1 | cut -f2 -d" " | cut -c6 输出:1为小模式,0为大端模式; 解析:od命令的作用为将指定内容以八进制、十进制...、十六进制、浮点格式或ASCII编码字符方式显示; 方法二 echo -n I | od -o | head -n1 | awk '{print $2}'| cut -c6 输出:1为小模式,0为大端模式...方法三 lscpu | grep -i byte 输出:Byte Order: Little Endian; 解析:grep -i 为不区分大小写匹配; 注意:在低版本的Linux

    3.1K20

    字母大小转换

    1 问题 从键盘输入一个字符串,如何实现大小写字母反转,小写英文字母转换为大写英文字母,大写字母转换为小写字母、首字母大写和把第一个字母转换为大写其余为小写字母,并将其结果保存到一个文件中。...2 方法 先运用input()输入文件名和字符串 编程过程中使用swapcase()函数实现大小写反转,使用title()函数将字符串首字母大写,使用lower()函数实现大写字母转换为小写, 使用upper...()函数将小写字母转换为大写字母和使用capitalize()函数实现首字母大写其余字母为小写 打开文件,将其写入 以读的形式打开文件,读取文件信息 打印最后的文件内容 通过实验、实践等证明提出的方法是有效的...fp = open(filename,"r") print(fp.read()) 3 结语 针对实现将英文小写字母转换为大写、大写字母转换为小写和首字母大写,并将其输出的结果保存到一个文件中的问题,提出并且使用...函数方法、lower()函数方法和capitalize()函数方法,最后将其结果保存在指定的文件中,通过此次实验,证明该方法是有效的,本文的代码写法较繁琐,输出结果也不美观,希望未来可以继续研究关于字母大小写等等问题

    18610

    机器大小存储模式

    一.大小是什么以及为什么会出现大小 1.为什么出现大小? 一开始是由于不同架构的CPU处理多个字节数据的顺序不一样,比如x86的是小段模式,KEIL C51是大端模式。...但是后来互联网流行,TCP/IP协议规定为大端模式,为了跨平台通信,还专门出了网络字节序和主机字节序之间的转换接口(ntohs、htons、ntohl、htonl) 2.大小是什么?...简单处理,创建一个整形变量,存值为1,16进制表示为0x00 00 00 01也为小存储模式,而0x 01 00 00 00 为大端存储模式对这个整型变量地址进行强制类型转换成char*类型,使得转换后每次只能访问一个字节...,在判断类型转换后解引用的值是否为一,如果小存储,低地址放低字节那访问一个字节就是01,而如果是大端字节存储,低地址放高字节,访问一个字节,值就为0。...当然,也有许多其他的判断大小代码,这里就不一一提了,了解大小存储模式会对后面指针学习有所帮助,也对内存有更进一步的认识。

    12510

    网络编程之大小

    大端&小 用C/C++写网络程序时,要注意字节的网络顺序和主机顺序的问题。...大端:高位在前,低位在后 小:高位在后,低位在前 假设unsigned int num = 0x12345678,内存起始位置为0x4000,则在内存中的存放顺序为: 内存地址 小模式 大端模式 0x4000...,IBM的cpu采用大端模式 也就是说我们在发送一个多字节数值的时候,需要确保发送前是大端模式,接收方再将大端模式转换为本机的大端或小模式,即: 发送者:在内存中应该以大端方式存放,即调用htonl(...)或htons() 接收:将网络字节顺序转换为主机字节顺序,即调用ntohl()或ntohs() 注意 数字所占位数小于或等于一个字节(8 bits)时,不要用htons转换。...这是因为对于主机来说,大小尾端的最小单位为字节(byte)。

    63920
    领券