【发布时间】:2019-03-05 09:12:20
【问题描述】:
我需要Base64.getDecoder().decode Java 代码的等效 C# 代码。
我在 C# 中尝试过类似以下的内容
byte[] decodedBytes = Convert.FromBase64String(embedCode);
string decodedText = Encoding.UTF8.GetString(decodedBytes);
byte[] bytes = Encoding.ASCII.GetBytes(decodedText);
但字符串有一些特殊字符,例如 0��\u0002B\0�*-\u0017���c\u001e�aֺ]���qr����`。如何在 C# 中实现这一点
【问题讨论】:
-
"如何在 C# 中实现这一点":源数据实际上是 Java 中的字符串吗?您不能对任意二进制数据使用 文本编码(例如 UTF8)。继续往下看,字符串是用 Java 编码的 UTF8 吗?
-
您的代码对于 Base64 编码的 UTF8 字节是正确的。所以你对输入数据的假设是错误的。
-
那么 Java 代码所做的不仅仅是只是调用
Base64.getDecoder().decode,因为 C# 代码的第 1 行正是要执行该操作。 -
好吧,验证所有步骤。首先检查 base64 输入(长度、第一个和最后一个字符)。它们应该是相同的 n Java 和 C#。然后比较
byte[]的长度等等。 -
如果您只需要您所说的等效代码,请从您的问题中删除最后两行代码并使用返回的字节数组。