这个问题在这里已经有答案了:
java代码-字节数组中的负字节到c#(4个答案)
5年前关门了。
请原谅,如果这个问题的措辞非常糟糕,但我会尽我所能解释什么是(对我)一个相当复杂的情况。我完全知道,我在这里的方式超过我的头,经验明智,但我希望你们中的一个可以帮助我。
我带着这件事来见你们,因为我完全是一个墨守成规的人,隧道的尽头似乎没有光明。
我有一个文件我想用它转换 C#
到 byte
数组,因为 byte
数组将作为参数发送到 Java
方法。
所以我想:
byte[] a = System.IO.File.ReadAllBytes(filePathHere);
现在,这起作用了,世界上一切都是和平的。但当我试图发送 a
进入我的 Java
方法。
当我试图把它发送到我的 Java
文件归档方式 JSON
是:
org.codehaus.jackson.jsonparseexception:数值(181)超出java字节的范围
现在,在一些(徒劳的)谷歌搜索之后,我得出结论 C#
认为将文件转换为 byte
包含值介于 0
以及 255
.
而 Java
作为我的方法的参数 byte
值从 -128
至 128
.
在一个理想的世界里,如果你们知道如何转换我的文件,我会很高兴的 C#
变成一个 byte
值从 -128
至 128
.
但是,如果这实际上是不可能的,我也会敞开心扉,在 Java
,转换我的 byte
值介于 0
以及 255
去一个更理想的地方 -128
至 128
格式。
我所描述的是不可能的,还是有人知道如何做到这一点?
我非常感谢任何人能提供的帮助。越详细越好!
2条答案
按热度按时间6qftjkof1#
在c#中转换类型相对简单:
顺便说一句,文件应该是由无符号字节组成的,所以没有必要讽刺(“c认为这很有帮助”)。只是java没有合适的数据类型来处理它。
zd287kbt2#
这是因为java只处理有符号的数字原语,而c#
byte
s是无符号8位整数。如何在java端解决:
您可以在整数/短数组中读取它,然后逐字节强制转换为字节数组。
如果需要处理区间[0-255]中的数字,则应使用整数或短数组。
如何在c侧解决:
使用
sbyte
(有符号字节)数组[-128到127]。