java中byte数组与int,long,short,float,char之间的转换

Byte和int之间的转换
/**
  *将32位的int值放到4字节的里
  * @param num
  * @return
  */
public static byte[] int2byteArray(int num) {
   byte[] result = new byte[4];
   result[0] = (byte)(num >>> 24);//取最高8位放到0下标
   result[1] = (byte)(num >>> 16);//取次高8为放到1下标
   result[2] = (byte)(num >>> 8); //取次低8位放到2下标
   result[3] = (byte)(num );      //取最低8位放到3下标
   return result;
}

/**
  * 将4字节的byte数组转成一个int值
  * @param b
  * @return
  */
public static int byteArray2int(byte[] b){
    byte[] a = new byte[4];
    int i = a.length - 1,j = b.length - 1;
    for (; i >= 0; i--,j--) {//从b的尾部(即int值的低位)开始copy数据
        if(j >= 0)
            a[i] = b[j];
        else
            a[i] = 0;//如果b.length不足4,则将高位补0
  }
    int v0 = (a[0] & 0xff) << 24;//&0xff将byte值无差异转成int,避免Java自动类型提升后,会保留高位的符号位
    int v1 = (a[1] & 0xff) << 16;
    int v2 = (a[2] & 0xff) << 8;
    int v3 = (a[3] & 0xff) ;
    return v0 + v1 + v2 + v3;
}
short和byte的互转

/**
  * 转换short为byte
  *
  * @param b
  * @param s 需要转换的short
  * @param index
  */
public static void putShort(byte b[], short s, int index) {
     b[index + 1] = (byte) (s >> 8);
     b[index + 0] = (byte) (s >> 0);
}

/**
  * 通过byte数组取到short
  *
  * @param b
  * @param index 第几位开始取
  * @return
  */
public static short getShort(byte[] b, int index) {
      return (short) (((b[index + 1] << 8) | b[index + 0] & 0xff));
}
byte和char类型的转换

/**
  * 字符到字节转换
  *
  * @param ch
  * @return
  */
public static void putChar(byte[] bb, char ch, int index) {
        int temp = (int) ch;
        // byte[] b = new byte[2];
        for (int i = 0; i < 2; i ++ ) {
             // 将最高位保存在最低位
            bb[index + i] = new Integer(temp & 0xff).byteValue();
            temp = temp >> 8; // 向右移8位
        }
}

/**
  * 字节到字符转换
  *
  * @param b
  * @return
  */
public static char getChar(byte[] b, int index) {
        int s = 0;
        if (b[index + 1] > 0)
            s += b[index + 1];
        else
            s += 256 + b[index + 0];
        s *= 256;
        if (b[index + 0] > 0)
            s += b[index + 1];
        else
            s += 256 + b[index + 0];
        char ch = (char) s;
        return ch;
}
byte和float的转换

/**
  * float转换byte
  *
  * @param bb
  * @param x
  * @param index
  */
public static void putFloat(byte[] bb, float x, int index) {
        // byte[] b = new byte[4];
        int l = Float.floatToIntBits(x);
        for (int i = 0; i < 4; i++) {
            bb[index + i] = new Integer(l).byteValue();
            l = l >> 8;
        }
}

/**
  * 通过byte数组取得float
  *
  * @param bb
  * @param index
  * @return
  */
public static float getFloat(byte[] b, int index) {
        int l;
        l = b[index + 0];
        l &= 0xff;
        l |= ((long) b[index + 1] << 8);
        l &= 0xffff;
        l |= ((long) b[index + 2] << 16);
        l &= 0xffffff;
        l |= ((long) b[index + 3] << 24);
        return Float.intBitsToFloat(l);
}
byte和double转换

/**
  * double转换byte
  *
  * @param bb
  * @param x
  * @param index
  */
public static void putDouble(byte[] bb, double x, int index) {
        // byte[] b = new byte[8];
        long l = Double.doubleToLongBits(x);
        for (int i = 0; i < 4; i++) {
            bb[index + i] = new Long(l).byteValue();
            l = l >> 8;
        }
}

/**
  * 通过byte数组取得float
  *
  * @param bb
  * @param index
  * @return
  */
public static double getDouble(byte[] b, int index) {
        long l;
        l = b[0];
        l &= 0xff;
        l |= ((long) b[1] << 8);
        l &= 0xffff;
        l |= ((long) b[2] << 16);
        l &= 0xffffff;
        l |= ((long) b[3] << 24);
        l &= 0xffffffffl;
        l |= ((long) b[4] << 32);
        l &= 0xffffffffffl;
        l |= ((long) b[5] << 40);
        l &= 0xffffffffffffl;
        l |= ((long) b[6] << 48);
        l &= 0xffffffffffffffl;
        l |= ((long) b[7] << 56);
        return Double.longBitsToDouble(l);
    }
}

 

AUTOSAR—TM模块介绍及使用概要 根据所要测量的场景不同,有1us16bit、1us24bit、1us32bit、100us32bit四种类型可选;TM模块在服务层,提供一些基于时间的服务功能,如测量CPU和任务的负载,周期执行一些回调函数。2、对于需要在不同时间执行不同逻辑的周期任务中,可以搭建时间状态机:参考Tm用户手册;定时器复位、获取时间宽度、定时器转换、定时器同步、繁忙等待。偏移定时器实例的参考时间,直接将定时器数值进行偏移;以1us16bit定时器类型为例,讲几个常用函数。同步两个定时器,把源定时器时间值给到目的定时器。 阅读详情

相关推荐

第十九届全国大学生智能车竞赛越野信标 硬件篇

全国大学生智能汽车竞赛,越野信标组

2301_77568650的博客 4118

byte,char,int类型转换

byte,char,int类型转换 问题来源于BufferedInputStream的 public synchronized int read() throws IOException { if (pos &gt;= count) { fill(); if (pos &gt;= count) ...

我的BLOG 960

debian mirrors 镜像源 riscv 64 赛昉 星光 starfive vf2 InRelease‘ doesn‘t support architecture ‘riscv64‘

debian mirrors 镜像 riscv 64 赛昉 星光2 starfive vf2 InRelease' doesn't support architecture 'riscv64'

qq_29758759的博客 1259

byte数组转float java_byte数组转float 以及byte转其他类型时为什么要&0xff

static final char[] HEX_CHARS = "0123456789abcdef".toCharArray();//转换为十六进制public static String toHexString(byte[] b ) {StringBuilder sb = new StringBuilder(b.length << 2);for (byte x : b) {//byt...

weixin_39559382的博客 392

基于N32G003的PMBus从机协议栈设计与STM32F103模拟I2C主机通信实战

本文详细介绍了基于N32G003微控制器设计PMBus从机协议栈,并与STM32F103模拟I2C主机进行通信的实战方案。重点阐述了中断驱动架构、命令解析、CRC8优化及超时恢复机制,实现了在70kHz速率下稳定可靠的工业电源管理通信,适用于服务器电源、通信基站等成本敏感应用场景。

numpy6sculptor的博客 919

TIA西门子博途V19安装教程及注意事项

TIA西门子博途V19安装教程及注意事项

Robot_PLC_HMI_Automation 1万+

JAVA实现FLOAT32 类型转换大小端转换,从(1234)到 (3412) 交换字节模式

示例3,当写入287454020时,对应的十六进制为0x11223344, 经过使用不同数据类型转换字节序后,发送和接收顺序如下所示: FLOAT32 (3412) 小端交换字节模式 33,44,11,22 FLOAT32 (1234) 大端模式 11,22,33,44 FLOAT32(2143) 大端交换字节模式 22,11,44,33 FLOAT32(4321) 小端模式 44,33,2...

知识的灯塔,梦想的航船 3518

AUTOSAR进阶图解==>AUTOSAR_SWS_ADCDriver

本文深入解析了AUTOSAR ADC Driver的架构设计和技术实现。主要内容包括:1)ADC Driver在AUTOSAR分层架构中的定位及核心功能;2)详细的模块架构设计,涵盖初始化管理、组转换管理、优先级处理等核心子组件;3)全面的配置模型说明,包括主配置类、通用配置、通道配置等关键数据结构;4)状态机机制和操作序列分析。通过分层设计和标准化接口,ADC Driver实现了硬件抽象和软件解耦,提供了良好的可移植性和可维护性。

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 788

Java基本数据类型自动转换

java基本数据类型自动转换

m0_56195330的博客 3495

数据库课程案例——电力公司收费管理系统分析与实践,完整带SQL语句

某电力公司收费管理信息系统实现客户信息、用电类型(类别号、类别名、电价)及业务员管理;实现客户用电信息管理(客户号、月份、用电类别号、用电度数);实现客户费用管理(客户号、月份、费用、收费标志),收费标志的默认值为“未收”;实现收费登记(客户、月份、应收费用、实收费用、业务员),并自动修改收费标志(用触发器实现);创建触发器,实现收费时自动更加应收费用和实收费用,计算本次结余,然后修改客户信息表中的结余金额;创建存储过程统计指定月份应收费用和实收费用;创建存储过程查询指定月份未交费的用户信息,以便崔费;创建

qq_44242804的博客 2763

基于Pascal VOC数据集的YOLOv8目标检测系统实现:人、鸟、猫、牛、电视、车等20类目标识别与UI界面部署全流程详解

VOC 2007、VOC 2012 两个主要版本;每个图像提供 bounding box(目标框)+ 目标类别;共计 20 类,所有图像手工标注,质量高。完整复现 Pascal VOC 20类检测任务成功训练 YOLOv8 模型实现可视化 UI + 实时检测系统支持多平台部署和演示。

YOLO 772

short类型与int类型转换,float类型与double类型转换

1.问题背景        在问题类型转换中,short a = 1;把int类型转为short类型推翻了转换类型中的,大转小的理论,其实不然。与float f = 3.4 中double float转为float 大转小报错,展开深入研究。 2.基本1.Java类型转换 Java类型转换分为自动转换和强制转换两种。 基本类型间的自动类型转换需要满足以下条件: (1).转换双

weixin_38699282的博客 2万+

github创建账号第一步始终出错

github创建账号总结:第一次注册GitHub,填好用户名邮箱密码后进入下一步就卡在哪里,上面还提示Unable to verify your captcha response等,进入网址的解决办法以及下载其他的浏览器也无法解决,用手机浏览器抱着试一试的心态竟然成功了,分享给大家。手机下载谷歌浏览器,进入GitHub正常注册,能向下继续,邮箱验证完以后再用电脑登陆就ok啦

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 4376

Java中byte数组与short,int,char,long,float,double之间的转换

http://blog.youkuaiyun.com/top_code/article/details/20126575 某些场景下我们接受和发送的数据都是byte数组,例如在socket传输中,发送、者接收的数据都是 byte数组,或者是自定义传输协议或者文件格式中,为了保证数据安全、节省流量服务端需要对数据进行先加密、压缩,然后再进行传输;客户端对传输过来的数据进行解压缩、解密。而实际中我们会传输各

u012149181的博客 905

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java byte char int数组_java中byte数组与int,long,short,float,char之间的转换

Byte和int之间的转换/***将32位的int值放到4字节的里* @param num* @return*/public static byte[] int2byteArray(int num) {byte[] result = new byte[4];result[0] = (byte)(num >>> 24);//取最高8位放到0下标result[1] = (byte)(...

weixin_35965648的博客 148

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

四个字节与float的换算_java中float与byte[]的互转

import java.nio.ByteBuffer;import java.util.ArrayList;float buffer = 0f;ByteBuffer bbuf = ByteBuffer.allocate(4);bbuf.putFloat(buffer);byte[] bBuffer = bbuf.array();bBuffer=this.dataValueRollback(bBuf...

weixin_39795065的博客 1254

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java中byte数组和int,long,short之间的转换

public class ByteUtil {       /**       * 转换short为byte       *        * @param b       * @param s       *            需要转换的short       * @param index       */       public static void putShort

snmkc_csdn的博客 1703

Java short long int 与byte数组之间相互转换

Java基本类型与byte数组之间相互转换, 这几天一直用json。 好久没用过byte了,现在用socket,全部是byte,所以整理了下 public class ByteUtil {     public static byte[] getBytes(short data)     {         byte[] bytes = new byte[2];         by...

github_as的博客 1430

java中byte数组与int,long,short间的转换

package com.util;      /**   *    * &lt;ul&gt;   * &lt;li&gt;文件名称: com.born.util.ByteUtil.java&lt;/li&gt;   * &lt;li&gt;文件描述: byte转换工具&lt;/li&gt;   * &lt;li&gt;版权所有: 版权所有(C)2001-2006&lt;/li&g

summer85的博客 254

byte[]与各种数据类型互相转换示例

byte[]与各种数据类型互相转换示例 public class TestCase { /** * short到字节数组的转换. */ public static byte[] shortToByte(short number) { int temp = number; byte[] b = new byte[2]; for (int i = 0; i < b.length; i++) { b[i] = new Integer(tem

weixin_40645998的博客 1255

Java基本类型与byte数组之间相互转换

Java基本类型与byte数组之间相互转换 package cn.teaey.utils; import java.nio.charset.Charset; public class ByteUtil {     public static byte[] getBytes(short data)     {

w1017717601的专栏 482

基本类型数组与包装类型数组相互转换

/** * 基本类型数组与包装类型数组相互转换的工具类 */ public class CastArrayUtil { private CastArrayUtil(){} /** * 将基本类型数组转换为对应的包装类型数组 * * @param original * @return ...

小伍的程序之路 2309

java中byte数组与int,long,short间的转换 .

package com.util;    /**  *   *   * 文件名称: com.born.util.ByteUtil.java  * 文件描述: byte转换工具  * 版权所有: 版权所有(C)2001-2006  * 公 司: bran  * 内容摘要:  * 其他说明:  * 完成日期:2011-7-18  * 修改记录0:无  *   *   * @version 1.0  *

juce的专栏 615
上一篇: Java InputStream、String、File相互转化
下一篇: 获取GenericHibernateDao中的泛型类
weixir123
博客等级 码龄16年 1粉丝 207原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值