`
helloyesyes
  • 浏览: 1305117 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

C#到Java byte类型冲突的解决

阅读更多

最近要改写一个核心加密认证类,从C#改写成Java。

发现在调试时,加密的数据无论如何也对不上。

经过跟踪,发现问题出在C#和Java byte类型的区别上:在C#里 byte类型是无符号的,而Java里是有符号的,所以C#里的129到Java里就成了负数。

发现了问题,解决就比较容易了,针对Java的byte,采用Int来进行存储。

通过如下代码从byte到int进行转换:

对于下面C#的代码:

改写为如下形式,相当于重新实现BinaryReader的ReadInt16和ReadInt32方法。

上面的例子说明,c#和Java虽然非常相像,但是一些关键细节的不同是需要仔细考虑的。

分享到:
评论

相关推荐

    C#与java比较

    特别地,C# 的 BYTE 类型默认为无符号类型,而 Java 缺乏这一特性。 - **字符串处理**:在 C# 和 Java 中,字符串都是不可变的对象。C# 提供了一些特殊的构造方法来处理字符串,并允许直接使用字符串值而无需进行...

    java和C#的初级试题6

    Java提供了八种基本数据类型:byte、short、int、long、float、double、char和boolean。此外,还有引用数据类型,如数组和类。了解这些数据类型的使用和区别,对于编写高效、正确的代码至关重要。 #### 3. 控制结构...

    个人c# 学习基础资料

    - **整数类型**:包括有符号和无符号整数类型,如 `sbyte`、`byte`、`short`、`ushort`、`int`、`uint`、`long` 和 `ulong`。 - **浮点类型**:包括 `float` 和 `double`,其中 `double` 的精度高于 `float`。 - ...

    C++程序员快速学习C#

    4. **整数类型**:引入了`byte`、`sbyte`、`short`、`long`等类型,其中`long`为64位,适应64位机器编程需求;`uint`、`ushort`、`ulong`为无符号整数。 5. **字符串类型**:`String`类型为引用类型,支持字符串操作...

    最简单的C#快速入门教程

    - C# 设计之初就考虑到了与其他.NET框架语言的兼容性和互操作性。 - C# 的语法结构与C++和Java相似,但更简化、更易于学习和使用。 - 对于已经熟悉C++或Java的开发者来说,学习C#将非常迅速。 #### 二、C# 语言特性...

    C# Language Specification 1.2

    ### C#程序设计语言基础知识...以上概述了C#程序设计语言的基础知识,涵盖了从简单的Hello World程序到更复杂的面向对象概念。对于初学者来说,理解这些基本概念是至关重要的第一步,也是构建更复杂应用程序的基础。

    C#基础知识系统汇总

    C#是一种面向对象的编程语言,结合了C++的强大特性和Java的优雅风格,以及BASIC的易用性。它由微软开发,主要应用于Windows平台上的软件开发。C#不仅支持传统的桌面应用程序开发,如WinForms,还广泛用于Web应用程序...

    北大青鸟Java基础课件

    - **变量与数据类型**:Java有八种基本数据类型,如整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。还有类数据类型,如对象和数组。 - **流程控制语句**:包括...

    C#基本语法简单教程,推荐

    在C#中,名字空间(namespace)类似于Java中的包(package),用于组织和管理代码,避免命名冲突。例如,`using System;`语句引入了System名字空间,这样就可以使用其中定义的类和方法,如Console类,用于输出文本。...

    常见的C#.net面试题

    - **final**:在Java中用于标记常量或不允许被继承的类,在C#中并没有直接对应的语法,但在某些上下文中可能被提及以作对比。 - **finally**:用于异常处理中的`try...catch...finally`语句结构中,无论是否有异常...

    c#语言参考

    **类型**:C#有多种内置类型,包括整型(int、byte、short等)、浮点型(float、double)、字符型(char)、布尔型(bool)以及引用类型(如类和接口)。此外,还有动态类型(dynamic)和泛型(Generic),增强了...

    C#速成文档

    - **C#语言特性**:C#结合了C++的强大特性和Java的易用性,同时也借鉴了Basic的快速开发能力。 - **适用对象**:适合已有编程基础,尤其是熟悉C++或Java的开发者快速上手。 - **学习目标**:帮助读者在一个小时内...

    c#入门教程

    C#支持多种内置数据类型,包括整型(int、short、byte等)、浮点型(float、double)、字符型(char)和布尔型(bool)。此外,还有引用类型(如类、接口和数组)和值类型(如结构)的区别。 3. **类与对象** C#...

    c#快速入门教程和asp.net关联

    C#中有两种类型的数据:内置类型和用户定义类型。内置类型包括数值类型、布尔类型、字符类型等。这些类型都是从`object`类派生而来。例如: - `byte`: 无符号整数,占用1字节。 - `sbyte`: 有符号整数,占用1字节。...

    C#程序员参考手册(入门级)

    1. **语法结构**:C#的语法结构类似于C++和Java,包含变量声明、数据类型、运算符、控制流语句(如if、for、while)等基础元素。 2. **类与对象**:C#是面向对象的语言,一切皆为对象。了解类的定义、对象的创建以及...

    C# primer.pdf

    - 可以指定枚举类型的底层数据类型,如`enum Week : byte`。 17. **委托(Delegate)**: - 委托类似于C++的函数指针,可指向相同签名的方法。 - 使用`new DelegateType(MethodName)`创建委托实例。 - 委托使用`+...

    使用自定义ClassLoader解决反序列化serialVesionUID不一致问题 _ 回忆飘如雪1

    此方法能解决所有类的`serialVersionUID`问题,但如果类的属性类型发生变化,仅修改`serialVersionUID`是不够的,因为`serialVersionUID`的变更不仅与类的标识有关,还与类的属性和方法相关。 5. **使用`...

    第二事业部第七次纳新笔试题.docx

    2. 添加`PATH`:将`%JAVA_HOME%\bin`添加到系统环境变量的`PATH`中,以便命令行可以找到Java命令。 3. 设置`CLASSPATH`:通常不需要手动设置,但如果需要引用特定的类库,可以包含相应的路径。 【String与...

Global site tag (gtag.js) - Google Analytics