java byte 转 c_C 和 Java 之间的byte数据的转换问题
C语言里通常可能开发人员直接定义struct 作为数据包,
因此在java客户端接收struct 中的数据时候,受整数等类型的高低位存放的影响,
需要进行相应的转换,
参考:
转换代码如下:
package com.lizongbo.util;
/**
*
*
Title: 数字转换工具类
*
*
Description: 将数字类型与byte数组互相转换
*
*
Copyright: Copyright (c) 2007
*
*
Company: 618119.com
*
* @author lizongbo
* @version 1.0
*/
public class NumberUtil {
/**
* 整数转C++存放格式的字节数组
* @param v int
* @return byte[]
*/
public static byte[] int2Byte4C(int v) {
byte[] b = new byte[4];
//注意,不是java中的顺序的 b[0],b[1],b[2],b[3]
b[3] = (byte) ( (v >>> 24) & 0xFF);
b[2] = (byte) ( (v >>> 16) & 0xFF);
b[1] = (byte) ( (v >>> 8) & 0xFF);
b[0] = (byte) ( (v >>> 0) & 0xFF);
return b;
}
/**
* C++存放格式的数组转整数
* @param b byte[]
* @return int
*/
public static int byte2Int4C(byte[] b) {
return byte2Int(b, 0);
}
/**
* C++存放格式的数组转整数
* @param b byte[]
* @param index int 指定的数组的起始索引位置
* @return int
*/
public static int byte2Int4C(byte[] b, int index) {
//注意,不是java中的顺序的 b[0],b[1],b[2],b[3]
return (b[index + 3] & 0xff) << 24 |
(b[index + 2] & 0xff) << 16 |
(b[index + 1] & 0xff) << 8 |
b[index + 0] & 0xff;
/**
下面这个是错的 ,我被坑了 , 当时照抄 的 java.io.DataInputStream.readInt();
if ((ch1 | ch2 | ch3 | ch4) < 0) {
return 0;
}
return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0));
*/
}
/**
* 整数转java存放格式的字节数组
* @param v int
* @return byte[]
*/
public static byte[] int2Byte(int v) {
byte[] b = new byte[4];
b[0] = (byte) ( (v >>> 24) & 0xFF);
b[1] = (byte) ( (v >>> 16) & 0xFF);
b[2] = (byte) ( (v >>> 8) & 0xFF);
b[3] = (byte) ( (v >>> 0) & 0xFF);
return b;
}
/**
* Java存放格式的数组转整数
* @param b byte[]
* @return int
*/
public static int byte2Int(byte[] b) {
return byte2Int(b, 0);
}
/**
* Java存放格式的数组转整数
* @param b byte[]
* @param index int 指定的数组的起始索引位置
* @return int
*/
public static int byte2Int(byte[] b, int index) {
return (b[index + 0] & 0xff) << 24 |
(b[index + 1] & 0xff) << 16 |
(b[index + 2] & 0xff) << 8 |
b[index + 3] & 0xff;
/**
下面这个是错的 ,我被坑了 , 当时照抄 的 java.io.DataInputStream.readInt();
if ((ch1 | ch2 | ch3 | ch4) < 0) {
return 0;
}
return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0));
*/
}
public static void main(String[] args) {
for (int i = 40000; i < 40300; i++) {
int r = byte2Int(int2Byte(i));
if (r != i) {
System.out.println(i);
}
}
}
}
java byte 转 c_C 和 Java 之间的byte数据的转换问题相关推荐
- CAN光端机解决泰和安TX3016C消防主机长距离联网问题 实现CAN与光纤之间的双向数据智能转换
火灾报警主机联网问题一直是各消防项目中的难点,特别是管廊等长距离通讯中,如何保证通讯信号长期稳定可靠的运行是需要工程重点解决的问题,而LCAN-FOBR系列环网冗余式CAN光纤转换器提供二路光通道和一 ...
- Java shared data_Java多个线程之间处理共享数据的方式
题目要求: 有4个线程,其中两个线程每次对x加1,另外两个每次对x减1,如何实现? 分析: x就是这4个线程要处理的共享数据,不同种线程有不同的处理方式,但操作的数据是共同的,联想到"窗口买 ...
- matlab中关于unit8和double数值类型之间的存储数据和转换问题
最近写matlab又遇到一个坑,感觉是匪夷所思的bug,简直刷新我的人生观.世界观和价值观[手动笑哭] 想解决的问题很简单,我就是想求一张图片中所有像素点的R.G.B三个颜色分量的平均值,然后我发现, ...
- Java初认识--基本数据类型(int 和byte之间赋值)默认值 类型强转
Java简单介绍 Java面向对象:一个面向对象的木匠关心的制作的椅子:这个木匠干了什么事情 非面向对象的木匠关心的是所使用的工具. 狗吃粮 面向对象 吃狗粮 非面向对象 Java与c++区别: 1. ...
- java怎么改变数据类型_java数据类型之间的转换,是怎么回事啊? - 收获啦
1.数据类型的分类 2.比较数据类型之间的字节大小 1字节=8位 . 3.转换中的知识点 *java中整数类型默认的int类型:小数类型默认的double: *String的字符串转化为char类型时 ...
- 字节数组byte[]和整型,浮点型数据的转换——Java代码
近期在写C++ socket和java socket之间的通信程序,涉及到整数浮点数的传输.须要从字节数组还原数据,查了一些资料.总结例如以下 1. 整数和浮点数的机器表示 在机器内部.不 ...
- java与c的交互,java与c/c++之间的数据交互,java交互
java与c/c++之间的数据交互,java交互 java与c/c++之间的数据交互有这样几种情况:java和c/c++之间基本数据类型的交互,java向c/c++传递对象类型,c/c++向java返 ...
- java截取某两个字符之间的字串_Java截取特定两个标记之间的字符串实例
Java截取特定两个标记之间的字符串实例 如有一串字符串: higklmnopq java代码如下: public class StringTest { public static void main ...
- java 嵌套对象转xml_Gson对Java嵌套对象和JSON字符串之间的转换 | 学步园
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...
最新文章
- 解密为什么八成IT人士愿意跳槽?
- 结对开发——环形一维数组求最大子数组和
- 【三维激光扫描】实验02:StonexSiScan新建项目、加载点云数据
- php无限极菜单,无限极菜单的实现
- mac instantclient_12_2 安装配置
- Hanlp的安装和配置
- 优化了破网站的搜索功能
- 受上海Model S自燃影响?特斯拉市值周一蒸发18亿美元
- java 多态性 变量_java – 与实例变量的多态性
- Entity Resolution(实体解析)
- 1.TCP/IP 详解卷1 --- 概述
- 网吧IC卡收费系统常见问题与解决(转)
- 矩阵分解 三角分解(LU分解)
- python-onvif库基本使用
- 新手自己搭建服务器步骤
- win10修复计算机选项,为你win10系统设置启动时按F10出现修复计算机选项的技巧...
- ant design vue金额校验
- android iCloud 短信,云助手 基于安卓的iCloud
- XGBoost如何画出树分裂图,用代码绘制多棵CART回归树
- Encountered a duplicated sql alias [id] during auto-discovery of a native-sq
热门文章
- 完全禁用Microsoft Compatibility Telemetry
- SDH光传输设备是什么?SDH设备特点介绍
- 光模块的正确安装方法和使用须知
- 如何有效维护PDH光端机的常见故障?
- [渝粤教育] 广东-国家-开放大学 21秋期末考试招投标与合同管理10217k2 (2)
- 【渝粤题库】陕西师范大学210011幼儿园语言教育作业(高起专)
- 数学猜想验证步骤_高中数学解题思路与技巧汇总,19种解题方法,实用!
- mysql 批量加索引_mysql优化:按期删数据 + 批量insert + 字符串加索引为何很傻
- 我的2020(年终总结)
- C++中函数概念解析(3)