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

时间:2015-04-28 12:58:23

标签: java c# arrays json byte

原谅如果这个问题的措辞非常糟糕,但我会尽力解释(对我来说)一个相当复杂的情况。我充分意识到我在这里已经超越了我,经验明智,但我希望你们中的一个可以帮助我。

我带着明白的心情来到你这里,因为我在一个完整的车辙中,隧道尽头似乎没有光。

我希望将C#转换为byte数组的文件,因为byte数组将作为参数发送到Java方法。

所以我想:

byte[] a = System.IO.File.ReadAllBytes(filePathHere);

现在,这是有效的,一切都是和平的。但是当我尝试将a发送到我的Java方法时会出现问题。

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

  

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

现在,经过一些(徒劳)谷歌搜索,我得出的结论是C#认为它有用,将文件转换为byte数组,其中包含{{1}之间值的项目}和0

虽然255期望作为我的方法的参数而得到Java数组,其值从byte-128

在理想的世界中,如果你们中的任何人知道如何将我的文件128转换为C#数组,其值从byte-128,我会很高兴

但是,如果这实际上是不可能的,我也可以在128中将我的Java数组转换为byte0之间的值更希望255-128格式。

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

我非常感谢任何人都可以提供帮助。越详细越友好,越好!

2 个答案:

答案 0 :(得分:0)

这是因为Java仅使用带符号的数字基元,而c#byte是无符号的8位整数。

如何在Java方面解决:

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

如何在C#方面解决:

答案 1 :(得分:0)

在C#中转换类型相对简单:

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

作为旁注,文件假定由无符号字节组成,因此不需要sarcasm(“C#认为它有用”)。只是Java没有适当的数据类型来处理它。