Skip to content

C#与Java二进制编码转换,补码

约 203 字小于 1 分钟

NET

2019-03-05

  • 与Java接口对接时转换出来的编码的值是0转换出来的编码的值是0转换出来的编码的值是00255的范围,而java方需要的是-128127的编码范围,需要把编码做一个转换
  • byte的范围是0-255,sbyte的范围是-128~127,实际上就是把byte转换为sbyte
sbyte[] sbyt = Array.ConvertAll(ret, s => (sbyte)s);
 
//两种效果相同
 
public static sbyte[] ToJavaBytes(byte[] bytes)
        {
            int l = bytes.Length;
            sbyte[] sbytes = new sbyte[l];
            for (int i = 0; i < l; i++)
            {
                var b = bytes[i];
                if (b > 127)
                    //sbytes[l - 1 - i] = (sbyte)(b - 256);
                    sbytes[i] = (sbyte)(b - 256);
                else
                    //sbytes[l - 1 - i] = (sbyte)b;
                    sbytes[i] = (sbyte)b;
            }
            return sbytes;
        }

掉头发..