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程序:
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创建的类实例标识符(类似于内存地址(。如果您多次运行代码,输出应该会更改。