原谅如果这个问题的措辞非常糟糕,但我会尽力解释(对我来说)一个相当复杂的情况。我充分意识到我在这里已经超越了我,经验明智,但我希望你们中的一个可以帮助我。
我带着明白的心情来到你这里,因为我在一个完整的车辙中,隧道尽头似乎没有光。
我希望将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
数组转换为byte
和0
之间的值更希望255
到-128
格式。
我描述的是不可能的,或者有人知道如何做到这一点?
我非常感谢任何人都可以提供帮助。越详细越友好,越好!
答案 0 :(得分:0)
这是因为Java仅使用带符号的数字基元,而c#byte
是无符号的8位整数。
如何在Java方面解决:
如何在C#方面解决:
sbyte
(signed byte)数组[-128至127]。答案 1 :(得分:0)
在C#中转换类型相对简单:
File.ReadAllBytes(filePathHere).Select(b=>(sbyte)b).ToArray();
作为旁注,文件假定由无符号字节组成,因此不需要sarcasm(“C#认为它有用”)。只是Java没有适当的数据类型来处理它。