由于JAVA语言的数据类型都是有符号类型,而C# C++一般数据类型都是分有符号和无符号,因此在通信过程中传递的Byte[]无法直接转换成C#需要的类型,以前倒是没注意这些细节,因为一般用一种语言编程,大都有内置的转换方法。跨语言环境的转换就的自己动手想办法了。
1、java的Byte[]转换成c#的Int32
private int CoverJavaByteToInt(byte[] bytes)
{
char[] chars = Encoding.ASCII.GetChars(bytes);
int r = 0;
r |= (((int)(chars[0])) & 0xff) << 24;
r |= (((int)(chars[1])) & 0xff) << 16;
r |= (((int)(chars[2])) & 0xff) << 8;
r |= (((int)(chars[3])) & 0xff);
return r;
}
2、java的Byte[]转成c#的unshort
private ushort CoverJavaByteToUnshort(byte[] bytes)
{
ushort r = 0;
char[] chars=Encoding.ASCII.GetChars(bytes);
r |= (ushort)((chars[0] & 0xff) << 8);
r |= (ushort)(chars[1] & 0xff) ;
return r;
} 此代码会出现错误在某些情况,大致原因是因为转换char时值遭到改变,应该是表示范围问题导致
private ushort CoverJavaByteToUnshort(byte[] bytes)
{
ushort r = 0;
r |= (ushort)((bytes[0] & 0xff) << 8);
r |= (ushort)(bytes[1] & 0xff);
return r;
}此代码目前测试没问题了,如果谁遇到特殊情况 请与我联系
3、java的Byte[]转成c#的string(注意:我这个函数是根据我工作需要写的因为可能存在多个string或其他数据类型在整个数据流中,如你接收的数据流就是字符串,完全可以没这么麻烦,请自行修改)
/// <summary>
/// 转换Byte[]到String 默认采用UTF-8
/// </summary>
/// <param name="bytes">数据流的BYTE数组</param>
/// <param name="str">最终转换结果字符串</param>
/// <param name="indexStart">String的在数据流中的起始位置</param>
/// <returns>下一个数据类型在数据流中的起始位置</returns>
private int CoverJavaByteToString(byte[] bytes,ref string str,int indexStart)
{
byte[] uidLen = new byte[2];
Array.Copy(bytes,indexStart, uidLen, 0, 2);
ushort len = CoverJavaByteToUnshort(uidLen);
str = Encoding.UTF8.GetString(bytes,2+indexStart, len);
return str.Length+2+indexStart;
}
分享到:
相关推荐
可以转换日常使用中的任意复杂类型通信,成功解决C# DateTime和Java Date传递问题,解决java容器泛型与C#容器泛型转换问题,解决复杂对象问题(对象属性是另外对象,容器中套容器)等。 欢迎大家使用,有问题,可以...
3.)通过校牌指令执行相关业务,拉取数据通过访问java的http接口获取数据,并将数据进行处理转换为16进制形式下发给校牌 4.)配置相关接口地址 5.)校牌答题与教室端互动通过本地UPD传递给教室端,
14.4 继承中关于属性的一些问题.169 14.5 小 结 .172 第四部分 深入了解 C#.174 第十五章 接 口 .174 15.1 组件编程技术 .174 15.2 接 口 定 义 .177 15.3 接口的成员 .178 15.4 接口的实现 .182 ...
实例95 Java与C#混合编程的应用 实例96 C#与C++混合编程的应用 实例97 C#与VB混合编程的应用 实例98 C#组件与C#客户程序编程的应用 实例99 C#与XML联合应用XMLHelper 实例100 在C#中部署应用程序 附录 WinCV ...
网文也有一些,本文通过C#编写的winform程序与地磅进行对接,实时获取地磅称重数据。串口通讯,其根本还是一种通讯协议,所以根据不同的设备通讯协议也不尽相同,不过规律虽不同,但原理都是一致的。
第1篇 Visual C#基础编程实例 实例1 C#经典程序--Hello World 实例2 C#的简单输入输出(I/O) 实例3 C#的复杂输入输出(I/O) 实例4 通信录管理与维护 实例5 文件与目录管理 实例6 用户界面...
第1篇 Visual C#基础编程实例 实例1 C#经典程序--Hello World 实例2 C#的简单输入输出(I/O) 实例3 C#的复杂输入输出(I/O) 实例4 通信录管理与维护 实例5 文件与目录管理 实例6 用户界面...
第1章 Java概述 1 1.1 Java语言的发展简史 2 1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 1.3 Java程序运行机制 5 1.3.1 高级语言的运行机制 6...
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...
什么是JSON? JSON (JavaScript Object ...数据交换格式,是指客户端和服务器之间通信,传递数据时,数据使用的格式是json JSON在java中的使用 json在java中操作,需要用到 歌提供的gson工具类 public class GsonTest {
答:运行时异常时(JVM)java虚拟机在运行过程中发生的问题,比如:内存溢出等问题。这类异常没法要求程序员去一一捕获并抛出,一般异常是Java类库或程序员自己写的代码发生的错误,这类异常可以由我们去一一捕获并...
软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...
帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个...
4.2.3C#实例——商业对象与数据对象 107 4.2.4Java实例——不同系统的图像处理 112 4.2.5优势和缺陷 114 4.2.6应用情景 115 4.3CompositePattern(组合模式) 115 4.3.1定义 115 4.3.2组合模式的现实应用——...
4.2.3C#实例——商业对象与数据对象 107 4.2.4Java实例——不同系统的图像处理 112 4.2.5优势和缺陷 114 4.2.6应用情景 115 4.3CompositePattern(组合模式) 115 4.3.1定义 115 4.3.2组合模式的现实应用——...
由于公司同是使用.NET和JAVA,而且各个服务集使用接口来进行通信,因此某些例如清算系统、收银台之类的安全性比较高的系统会使用RSA进行加密。因此会涉及到秘钥的转换。所以大概看了下C#的秘钥跟JAVA的秘钥区别。 ...
这允许通过RR支持的任何平台和语言进行通信,例如Python,C ++,C#,MATLAB和Java。 2018年7月: 最新更新中添加的新功能: 摄像机主机现在需要在工作站上安装OpenCV。 它用于Aruco标签检测的新功能。 调用ARtag_...