Java 签名字节数组与 .Net 字节数组的兼容性

标签 java .net arrays jersey-2.0

我们有一个使用 jersey 的 Java Rest 服务。

我接收到字节数组形式的整数数据,其中嵌入了 CRC。它将输入作为 Plain_text,变量的类型为 string

我们需要重新检查 CRC 值。

因为它来自 .Net 应用程序,其中所有值都在 0 到 255 之间(有符号字节数组),而在 Java 中它在 -127 到 128 之间(有符号字节数组)。

所以我需要关于如何在 Java 中将无符号字节数组转换为有符号字节数组的建议?

我面临的其他问题是:

  1. 只要有一个值超过 127,那么在 java 中它就会显示一个垃圾值或 63(常数值不知道为什么)。

  2. 我觉得很奇怪,值小于 127,但 CRC 值在另一边。

我希望我已经把我的问题说清楚并提出建议。

由于其非常大的数组 anding (& 0xFF),不会成功。由于我们的数组大小很大。

最佳答案

要将有符号字节数组转换为无符号字节数组,我使用了:

private static void printByteArrayFromSigned(byte[] arr) {

    if(arr == null || arr.length == 0){
        logger.debug("Array vuoto");
        return;
    }
    StringBuilder sb = new StringBuilder();
    for(byte b : arr)   {
        int x = b;
        if(x<0){
            x+=256;
            sb.append("["+x+"]* ");
        }else{
            sb.append("["+x+"] ");
        }
    }
    logger.debug(sb.toString());
}
//* converted

反之亦然,从无符号到有符号字节数组使用:

private static void printByteArrayFromUnsigned(byte[] arr) {

    if(arr == null || arr.length == 0){
        logger.debug("Array vuoto");
        return;
    }
    StringBuilder sb = new StringBuilder();
    for(byte b : arr)   {
        int x = b;
        if(x>127){
            x-=256;
            sb.append("["+x+"]* ");
        }else{
            sb.append("["+x+"] ");
        }
    }
    logger.debug(sb.toString());
}

//* converted

关于Java 签名字节数组与 .Net 字节数组的兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21457344/

相关文章:

c# - 如何创建一个结合了CheckedListBox和详细ListView的显示?

arrays - Excel VBA 到 Excel 十进制精度

java - 当任务出现错误时,不要开始下一个任务并停止流程

java - 如何在java中的某个元素之后/之前将元素插入到xml中

java - break不能在循环外使用

c# - 有关如何在 C# 中从 XML 文档中正确提取 DateTime 的一些信息?

java - Spring 执行器的活跃度和就绪度正在恢复 404

.net - 线程正在休眠时,VB .Net服务不会停止

java - 数组的选择排序方法

python - numpy 数组中的几个元素