首页 > 编程语言 >java的byte和C#的byte的不同之处

java的byte和C#的byte的不同之处

时间:2023-03-10 09:24:13浏览次数:39  
标签:java C# int 127 128 byte

Java byte

java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,
byte,即字节,由8位的二进制组成。在Java中,byte类型的数据是8位带符号的二进制数。
在计算机中,8位带符号二进制数的取值范围是[-128, 127],所以在Java中,byte类型的取值范围也是[-128, 127]。

C# byte

c#的byte边界值为:0~255,
java的byte边界值为:-128~127。 当byte >=0 && byte <127时, 两边是相等的。

所以:java的byte转成C#可识别的byte时,如果byte<0, (byte+ 256) 即为C#可识别的byte。( 列个方程:java +256= C# 则 java = C#-256。 若满足条件 java<0,java>=-128 ,即 ( C#-256 < 0 && C#-256 >= -128 )
C#的byte转成java可识别的byte时,如果 byte >0 && byte<=127,可直接int转byte 。如果 byte >=128 则 javabyte = value - 256 。

 

java 转.net 

byte javabit = -112;

int bit = Convert.ToInt32(javabit);
byte bt = new byte();
if (bit < 0)
{
var st = (bit + 256).ToString();
bt = byte.Parse(st);
}
else
{
bt = byte.Parse(bit.ToString());
}

var st =  Encoding.GetEncoding("UTF-8").GetString(bt);

另一种写法 

String s="helloWorld";
byte[] b = s.getBytes();// 按照指定编码将String编程字节数组
int total = 0;
int temp;
// java模拟c# byte
for (int i = 0; i < b.length; i++) {
    temp = b[i] & 0xff;
    if (total + temp <= 0xff) {
        total += temp;
    } else {
        total = total + temp - 1 - 0xff;
    }
}

c# 转java 

        /// <summary>
        /// 转换为单字节  java base64
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string JavaBase64(string str)
        {
            byte[] by = Encoding.UTF8.GetBytes(str);
            sbyte[] sby = new sbyte[by.Length];
            for (int i = 0; i < by.Length; i++)
            {
                if (by[i] > 127)
                    sby[i] = (sbyte)(by[i] - 256);
                else
                    sby[i] = (sbyte)by[i];
            }
            byte[] newby = (byte[])(object)sby;
            return Convert.ToBase64String(newby);
        } 

另一种写法

 public int[] BuildJava(byte[] buff)
        {
            List<int> list = new List<int>();
            for (int i = 0; i < buff.Length; i++)
            {
                // C#byte转java byte
                if (Convert.ToInt32(buff[i]) >= 0 && Convert.ToInt32(buff[i]) <= 127)
                {
                    list.Add(Convert.ToInt32(buff[i]));
                }
                else
                {
                    list.Add(Convert.ToInt32(buff[i]) - 256);
                }
            }
            int[] arr = list.ToArray();
            return arr;
        }

在与java做通讯时(加密/解密 )遇到各种坑的,可以参考一下。

标签:java,C#,int,127,128,byte
From: https://www.cnblogs.com/daboluo/p/17202235.html

相关文章

  • calico的两种网络模式BGP和IP-IP性能分析 iperf3
    转载自:https://www.cnblogs.com/dgp-zjz/p/13212416.html======== 原文链接:https://mp.weixin.qq.com/s/688PEOWBhXxDz0eQpd1ydw目前使用较多的网络插件有flannel,cali......
  • celery在Django项目中的使用案例
    一、逻辑分析第一步:在项目根目录新建包第二步:在使用提交异步任务的位置,导入使用即可视图函数中使用,导入任务任务.delay()#提交任务第三步:启动worker,如果有定时任......
  • oracle触发器详解
    原文地址: https://www.cnblogs.com/programmer-wind/archive/2011/09/10/2919585.html触发器是许多关系数据库系统都提供的一项技术。在ORACLE系统里,触发器类似过程和函......
  • 当k8s做集群高可用的时候,需要将另一个master加入到当前master failure loading certif
      解决办法:[root@k8s-master2~]#mkdir-pv/etc/kubernetes/pkimkdir:createddirectory‘/etc/kubernetes/pki’[root@k8s-master2~]#mkdir-pv/etc/kuberne......
  • 在CentOS中用Linux命令行测试网速/带宽安装
    导读在使用Centos的时候,有没有想过,如果不用测速网站的话,如何测试网络速度呢?下面分享一个使用speedtest的方法。安装speedtest-clispeedtest-cli是一个用Python编......
  • java中的特殊文件、日志技术、多线程入门
    一,属性文件(.properties)1,特殊文件概述(必会)我们知道IO流是用来读数据,目的是为了获取其中的信息供我们使用,但是普通的txt文件是杂乱无章的,除非我们规定,自己写。虽然可以但......
  • ChatGPT
    GPT即GenerativePre-trainedTransformer,其中GenerativePre-trained利用简单的对文章进行挖空训练,跳过了数据集的人工标注过程,使得模型可以将一切人类的文章作为训练集,搭......
  • CentOS7 安装 docker
    CentOS7安装卸载docker查看内核版本,需要3.10以上uname-r更新yum软件包索引yummakecachefast卸载旧版本yumremovedocker\docker-cli......
  • C++常用查找算法 find
    功能描述:查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end()#include<iostream>#include<vector>#include<functional>#include<algorithm>#include......
  • su: Authentication failure
    参考文档:Ubuntu下postgresql出现Authenticationfailure(认证失败)的解决方法zonglin@zonglin-virtual-machine:~/Desktop$suPassword:su:Authenticationfailurezo......