将c#中的文件转换为字节数组,然后再将其解析为java

jexiocij  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(214)

这个问题在这里已经有答案了

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 值从 -128128 .
在一个理想的世界里,如果你们知道如何转换我的文件,我会很高兴的 C# 变成一个 byte 值从 -128128 .
但是,如果这实际上是不可能的,我也会敞开心扉,在 Java ,转换我的 byte 值介于 0 以及 255 去一个更理想的地方 -128128 格式。
我所描述的是不可能的,还是有人知道如何做到这一点?
我非常感谢任何人能提供的帮助。越详细越好!

6qftjkof

6qftjkof1#

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

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

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

zd287kbt

zd287kbt2#

这是因为java只处理有符号的数字原语,而c# byte s是无符号8位整数。
如何在java端解决:
您可以在整数/短数组中读取它,然后逐字节强制转换为字节数组。
如果需要处理区间[0-255]中的数字,则应使用整数或短数组。
如何在c侧解决:
使用 sbyte (有符号字节)数组[-128到127]。

相关问题