橙色阳光 2023-04-02 18:34 采纳率: 0%
浏览 17

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;i<Number.length;i++){
            System.out.print(" "+Number[i]);
        }
        System.out.println("");

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

        byte[] Hzs = "入".getBytes("UTF-8");
        System.out.print("入的byte数组打印输出: ");
        for (int i = 0;i<Hzs.length;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# 代码怎么表示 才能让输出保持一致。

  • 写回答

2条回答 默认 最新

  • 橙色阳光 2023-04-02 20:06
    关注

    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

    评论

报告相同问题?

问题事件

  • 创建了问题 4月2日

悬赏问题

  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?