java C# 代码转换

我很疑惑 为什么java 和 C# 关于 utf-8 对于 数字和英文的输出 保持是一致的,但对于中文的输出是不一致的
这是java 运行环境跑的结果 jdk 版本是 jdk1.8.0

img

以下是源码

byte[] Number = "1".getBytes("UTF-8");
        System.out.print("1的byte数组打印输出: ");
        for (int i = 0;ilength;i++){
            System.out.print(" "+Number[i]);
        }
        System.out.println("");

        byte[] Zms = "A".getBytes("UTF-8");
        System.out.print("A的byte数组打印输出: ");
        for (int i = 0;ilength;i++){
            System.out.print(" "+Zms[i]);
        }
        System.out.println("");

        byte[] Hzs = "入".getBytes("UTF-8");
        System.out.print("入的byte数组打印输出: ");
        for (int i = 0;ilength;i++){
            System.out.print(" "+Hzs[i]);
        }
        System.out.println("");

        System.out.println("----------------------");

这是C# 的代码的运行效果
用VS2019 跑的

img

byte[] Number = Encoding.UTF8.GetBytes("1");
            Console.Write("1的byte数组打印输出: ");
            foreach (byte b in Number)
            {
                Console.Write(" " + b);
            }
            Console.WriteLine();

            byte[] Zms = Encoding.UTF8.GetBytes("A");
            Console.Write("A的byte数组打印输出: ");
            foreach (byte b in Zms)
            {
                Console.Write(" " + b);
            }
            Console.WriteLine();

            byte[] Hzs = Encoding.UTF8.GetBytes("入");
            Console.Write("入的byte数组打印输出: ");
            foreach (byte b in Hzs)
            {
                Console.Write(" " + b);
            }

我想知道 Java代码中 byte[] Hzs = "入".getBytes("UTF-8"); 该用C# 代码怎么表示 才能让输出保持一致。

https://www.w3cschool.cn/java/java-unsigned-data-type.html

Java不支持无符号数据类型。
byte,short,int和long都是有符号数据类型。
对于有符号数据类型,值范围的一半存储正数,一半用于负数,因为一个位用于存储值的符号。
例如,一个字节需要8位;其范围是-128到127.如果您只在一个字节中存储正数,则其范围将为0到255。

C#
sbyte -128 到 127 8 位带符号整数 System.SByte
byte 0 到 255 无符号的 8 位整数 System.Byte
short -32,768 到 32,767 有符号 16 位整数 System.Int16
ushort 0 到 65,535 无符号 16 位整数 System.UInt16
int -2,147,483,648 到 2,147,483,647 带符号的 32 位整数 System.Int32

总结就是 Java的 byte 是由符号的 -128到127 ;C# 是的无符号的 0 到 255

在我看来,你这两个输出是一致的,一个是负数,加 2^8 进行运算就可以了和 c# 一致了,试着用无符号整型看看