首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将int转换为字节数组时的不同结果- .NET与Java

将int转换为字节数组时的不同结果- .NET与Java
EN

Stack Overflow用户
提问于 2011-05-07 07:49:58
回答 1查看 6K关注 0票数 5

我试图将数据从java客户端发送到c#服务器,但在将整数转换为字节数组时遇到了问题。

当我使用下面的代码用c#转换数字8342时:

代码语言:javascript
运行
复制
BitConverter.GetBytes(8342)

结果是: x4 ={ 150,32,0,0}

对于java,我使用:

代码语言:javascript
运行
复制
ByteBuffer bb = ByteBuffer.allocate(4); 
bb.putInt(8342); 
return bb.array();

这里的结果是: x4 ={ 0,0,32,-106 }

有人能解释一下吗?我是java的新手,这是我第一次在字节数组中看到负数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-07 07:59:58

您必须更改字节顺序:

代码语言:javascript
运行
复制
 bb.order(ByteOrder.LITTLE_ENDIAN)

Java在内部以高字节顺序存储内容,而.NET默认情况下是低字节顺序。

Java和.NET在有符号和无符号方面也有区别,Java使用有符号字节,C#使用无符号字节。你也必须改变这一点。

基本上,这就是为什么你会看到-106 ( 150 - 256 )

您必须执行类似下面的实用程序方法的操作:

代码语言:javascript
运行
复制
public static void putUnsignedInt (ByteBuffer bb, long value)
    {
       bb.putInt ((int)(value & 0xffffffffL));
    }

请注意,值是long。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5918133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档