Java到C#的翻译

本文关键字:翻译 Java | 更新日期: 2023-09-27 18:04:57

当我在Java中运行以下代码时,我会得到输出:[B@1ddcac5

Java代码

byte[] byteA = "test".getBytes("UTF-8");
System.out.println(String.valueOf(byteA));

如果我尝试在C#中运行类似的代码,我只得到:System.Byte[]

C#代码

Console.WriteLine(Encoding.UTF8.GetBytes("test"));

如何在C#中获得与在Java中相同的输出?

感谢

Java到C#的翻译

您应该首先修复Java程序:

byte[] byteA = "test".getBytes("UTF-8");
System.out.println(Arrays.toString(byteA));

在ideone上演示。

现在用C#打印你的数组,两个输出开始相互匹配:

byte[] byteA = Encoding.UTF8.GetBytes("test");
for (int i = 0 ; i != byteA.Length ; i++) {
    Console.Write("{0} ", byteA[i]);
}

在ideone上演示。

这是相同的输出。只有java打印带有类型和内存地址的默认对象。在C#中,只打印类型。

输出[B@1ddcac5与其内容无关,[B指定对象是一个字节数组(因此相当于System.Byte[](,Java还打印标识哈希,在本例中为1ddcac5(这取决于对象的存储位置,因此如果您再次运行程序,哈希将发生变化(。您可以而简单地打印:

Console.WriteLine("[B@1ddcac5");

当然,语义是不一样的。

您不能,因为[B@1dcac5是Java创建的类实例标识符(类似于内存地址(。如果您多次运行代码,输出应该会更改。