在将C#中的文件解析为Java之前将其转换为字节数组

在将C#中的文件解析为Java之前将其转换为字节数组,java,c#,arrays,json,byte,Java,C#,Arrays,Json,Byte,如果这个问题的措辞非常糟糕,请原谅,但我会尽我所能解释(给我)一个相当复杂的情况。我完全意识到,我在这里有点不知所措,经验丰富,但我希望你们中的一位能帮助我 我带着这一点来到你们更光明的头脑中,因为我处于一个完全的常规中,在隧道的尽头似乎没有光 我想用C将一个文件转换成byte数组,因为byte数组将作为参数发送到Java方法中 所以我想: byte[] a = System.IO.File.ReadAllBytes(filePathHere); 现在,这是可行的,世界上一切都是和平的。但是当

如果这个问题的措辞非常糟糕,请原谅,但我会尽我所能解释(给我)一个相当复杂的情况。我完全意识到,我在这里有点不知所措,经验丰富,但我希望你们中的一位能帮助我

我带着这一点来到你们更光明的头脑中,因为我处于一个完全的常规中,在隧道的尽头似乎没有光

我想用
C
将一个文件转换成
byte
数组,因为
byte
数组将作为参数发送到
Java
方法中

所以我想:

byte[] a = System.IO.File.ReadAllBytes(filePathHere);
现在,这是可行的,世界上一切都是和平的。但是当我尝试将
a
发送到
Java
方法时,问题就出现了

当我试图通过
JSON
将其发送到我的
Java
文件时,它抛出的错误是:

org.codehaus.jackson.JsonParseException:数字值(181)为 Java字节的范围

现在,在一些(徒劳的)谷歌搜索之后,我得出结论,
C#
认为将文件转换为
字节
数组是有帮助的,该数组包含值介于
0
255
之间的项

虽然
Java
希望得到一个参数,但我的方法是一个
字节
数组,其值从
-128
128

在理想的情况下,如果你们中的任何人知道如何将我的文件
C
转换为
字节
数组,其值从
-128
128
,我会非常喜欢

然而,如果这实际上是不可能的,我也愿意在
Java
中,将值介于
0
255
之间的
byte
数组转换为更理想的
-128
格式

我所描述的是不可能的,还是有人知道如何做到这一点


我非常感谢任何人能提供的帮助。越详细,越友好,就越好

这是因为Java只处理有符号的数字原语,而c#
字节
s是无符号8位整数

如何在Java端解决:

  • 您可以在整数/短数组中读取它,然后逐字节强制转换为字节数组
  • 如果需要处理[0-255]区间内的数字,应使用整数或短数组
如何在C端解决:

  • 使用
    sbyte
    ()数组[-128到127]
在C#中转换类型相对简单:

File.ReadAllBytes(filePathHere).Select(b=>(sbyte)b).ToArray();

顺便说一句,文件应该是由无符号字节组成的,因此没有必要讽刺(“C#认为这很有帮助”)。只是Java没有适当的数据类型来处理它

您可以看到:迭代c#byte数组并将该位置的字节转换为带符号的int有帮助吗?我不熟悉这样做,但偶然发现了这篇msdn文章:nevermind,看起来是mo.ashfaq处理的。阅读该文件时,您可以看到以下内容: