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 iValue

* @return

*/

public byte[] Int2Bytes_LE(int iValue){

byte[] rst = new byte[4];

// 先写int的最后一个字节

rst[0] = (byte)(iValue & 0xFF);

// int 倒数第二个字节

rst[1] = (byte)((iValue & 0xFF00) >> 8 );

// int 倒数第三个字节

rst[2] = (byte)((iValue & 0xFF0000) >> 16 );

// int 第一个字节

rst[3] = (byte)((iValue & 0xFF000000) >> 24 );

return rst;

}

/**

* 转换String为byte[]

* @param str

* @return

*/

public byte[] String2Bytes_LE(String str) {

if(str == null){

return null;

}

char[] chars = str.toCharArray();

byte[] rst = Chars2Bytes_LE(chars);

return rst;

}

/**

* 转换字符数组为定长byte[]

* @param chars 字符数组

* @return 若指定的定长不足返回null, 否则返回byte数组

*/

public byte[] Chars2Bytes_LE(char[] chars){

if(chars == null)

return null;

int iCharCount = chars.length;

byte[] rst = new byte[iCharCount*UNICODE_LEN];

int i = 0;

for( i = 0; i < iCharCount; i++){

rst[i*2] = (byte)(chars[i] & 0xFF);

rst[i*2 + 1] = (byte)(( chars[i] & 0xFF00 ) >> 8);

}

return rst;

}

/**

* 转换byte数组为int(小端)

* @return

* @note 数组长度至少为4,按小端方式转换,即传入的bytes是小端的,按这个规律组织成int

*/

public int Bytes2Int_LE(byte[] bytes){

if(bytes.length < 4)

return -1;

int iRst = (bytes[0] & 0xFF);

iRst |= (bytes[1] & 0xFF) << 8;

iRst |= (bytes[2] & 0xFF) << 16;

iRst |= (bytes[3] & 0xFF)<< 24;

return iRst;

}

/**

* 转换byte数组为int(大端)

* @return

* @note 数组长度至少为4,按小端方式转换,即传入的bytes是大端的,按这个规律组织成int

*/

public int Bytes2Int_BE(byte[] bytes){

if(bytes.length < 4)

return -1;

int iRst = (bytes[0] << 24) & 0xFF;

iRst |= (bytes[1] << 16) & 0xFF;

iRst |= (bytes[2] << 8) & 0xFF;

iRst |= bytes[3] & 0xFF;

return iRst;

}

/**

* 转换byte数组为Char(小端)

* @return

* @note 数组长度至少为2,按小端方式转换

*/

public char Bytes2Char_LE(byte[] bytes){

if(bytes.length < 2)

return (char)-1;

int iRst = (bytes[0] & 0xFF);

iRst |= (bytes[1] & 0xFF) << 8;

return (char)iRst;

}

/**

* 转换byte数组为char(大端)

* @return

* @note 数组长度至少为2,按小端方式转换

*/

public char Bytes2Char_BE(byte[] bytes){

if(bytes.length < 2)

return (char)-1;

int iRst = (bytes[0] << 8) & 0xFF;

iRst |= bytes[1] & 0xFF;

return (char)iRst;

}

}

java java 大端_Java 大小端转换相关推荐

  1. Java字节序与大小端转换_什么时候要进行大小端字节序的转换? | 学步园

    什么时候要进行大小端字节序的转换? 通过socket收发数据(在intel的处理器上), 什么时候要进行大小端字节序的转换? 比如发一个int型的数据出去,要不要进行转换? 还是两端一样,就不用考虑转 ...

  2. Java 大小端转换(基于ByteBuffer)

    大小端的基础知识: 小端 ( little-endian):低位字节在前,高位字节在后.大端(Big-Endian),则反之.具体而言,就是为了说清楚,CPU架构中1字(word)的存储顺序.计算机内 ...

  3. java大小端转换工具类

    最近的项目频繁涉及大小端转换的情况,参考github(https://github.com/Frank-Wiebeler/java-Big2LittleEndian/blob/master/src/c ...

  4. .pgr照片文件解析,C++与Java存储数据差别大小端模式

    一..pgr是什么? .pgr文件是二进制的图像文件,可以用普通的文本文件打开,或者查看十六进制的文本信息: 读取需要了解~~~非常重要 !!! 基本数据类型的大小端存储模式 表头Header 详细信 ...

  5. c语言高低位拷贝_C语言中的大小端转换与高低位颠倒

    总结一下最近工作学到的东西,主要是关于大小端与高低位. 在说大小端高低位之前,肯定要说明数据在计算机内是如何存储的.在计算机中,我们将数据分割成了一个一个的字节(byte),而每个字节又有8位(bit ...

  6. 来点基础的东西,关于浮点数的大小端转换以及浮点数的格式解析

    在网上并没有任何信息或则资料介绍关于浮点数的大小端转换的原理的问题,大小端是不同的内存存储实现方式,大端更符合人的阅读习惯,而小端则是更适合CPU读取. 我先说整型,来说明大小端在内存中的存储方式,整 ...

  7. C语言中的大小端转换与高低位颠倒

    在说大小端高低位之前,肯定要说明数据在计算机内是如何存储的.在计算机中,我们将数据分割成了一个一个的字节(byte),而每个字节又有8位(bit). 一个字节,可以声明为unsigned char型数 ...

  8. 使用函数实现数据大小端转换

    使用函数实现数据大小端转换 题目描述 在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设计的层次,分别后续的修改. 请用函数实现一个4bit ...

  9. Verilog学习之数据大小端转换设计

    文章目录 前言 一.题目描述 二.实现思路 1.函数的概念 2.具体思路 三.代码展示 总结 前言 今天我们做的是第十道题--使用函数实现数据大小端转换,这道题其实也比较简单,就是逆向输出一个数据,但 ...

最新文章

  1. HTML5 虚拟键盘出现挡住输入框的解决办法
  2. Tkinter的Message组件
  3. cocos2d-html5 onEnter init ctor构造函数 ----js特有特性(和c++有一点不一样)
  4. fopen在linux中打开文件夹,plain C:用fopen()打开一个目录
  5. linux stoping redis,redis的cluster集群模式shell一键启动/停止/重启/清缓存脚本
  6. 个人计算机系统构造方式,计算机系统构造概要归纳.doc
  7. SpringBoot(二)
  8. mac免费CAD模型设计软件FreeCAD怎样设置中文模式
  9. 淘宝运营之:什么是浏览量(PV)什么是流量、访客数(UV)
  10. 游戏ui设计,游戏ui设计需要学什么
  11. 开关电源matlab仿真文件,《MATLAB+在开关电源仿真中的应用.pdf》-支持高清全文免费浏览-max文档...
  12. 用友加密服务器修改密码,用户密码怎么修改?
  13. 如何使用burp绕过token
  14. linux cups工作原理,Linux打印系统CUPS原理分析
  15. 万字干货:当了5次韭菜总结出来的抖音运营指南
  16. 微信 和 支付宝 公众服务号开发者文档
  17. android动画如何更新UI(ValueAnimator源码解析)
  18. html股票分时线代码,【股票课堂】:某交易员的趋势交易系统(附图解)
  19. 网络安全入门必学内容有哪些?网络安全最全知识点汇总来了
  20. 三、histeq的原理和用法

热门文章

  1. Android Ap 开发 设计模式第七篇:生成器模式
  2. XElement 和 XDocument 到底有什么区别?
  3. C# ActionT和 FuncT委托
  4. ABP vnext模块化架构的最佳实践的实现
  5. .NET Core 取消令牌:CancellationToken
  6. 深入探究ASP.NET Core Startup的初始化
  7. 使用keepalived搭建双机热备高可用一览
  8. 没用过.gitignore还敢自称高级开发?
  9. Asp.Net Core 中IdentityServer4 实战之角色授权详解
  10. .NET Core 如何判断程序是否在远程桌面(RDP)下运行