【问题标题】:converting String to ASCII--> BASE64将字符串转换为 ASCII--> BASE64
【发布时间】:2016-02-10 13:45:23
【问题描述】:

我正在从 C# 使用示例编写一个 REST 客户端。现在我需要以正确的格式转换一个字符串,但在 Java 上找不到等效的方法。

原文:

string Credentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string);

此时我已经做到了:

String Credentials = new String(DatatypeConverter.parseBase64Binary(String)); 

但我仍然需要 ASCII 转换,我不确定我找到的东西是否可以正常工作,例如:Convert character to ASCII numeric value in java

有什么线索吗?

谢谢。

【问题讨论】:

  • 您能否说明您是想从 ASCII 生成 Base64,就像在 C# 示例中一样,还是从 Base64 生成 ASCII,就像您使用 parseBase64Binary 所暗示的那样?
  • 从根本上说,您要在这里实现什么目标尚不清楚。请提供更多详细信息。
  • 我只是想在 Credentials 变量中实现相同的内容。我想的很清楚,对不起。我的代码仍然需要生成 String 变量的 ASCII 编码,然后将其转换为 Base64。我说的对吗?
  • 您的问题令人困惑,因为“ASCII 转换”并不是真正有效的术语。我想您是在问如何使用 ASCII 编码将字符串转换为字节,在这种情况下,答案是 someString.getBytes(StandardCharsets.US_ASCII)注意: 如果您的字符串包含数字代码点大于 127 的字符,则该信息将被删除。因此,您应该使用StandardCharsets.UTF_8,它将容纳所有可能的字符值。
  • 我实际上不需要字符串的 ASCII 表示(我说对了吗?:D)。这是制作 c# 示例的人在这种情况下需要的东西。通过使用 Aaron 的建议和 java8 方法,我终于能够使用 ws。谢谢! :)

标签: java c# string type-conversion ascii


【解决方案1】:

如果您使用的是 java 8,您应该看看它的新 Base64 类。它将为您提供一个Base64.Encoder,其encodeToString(byte[] src) 方法接受一个字节数组并返回一个base64 编码的字符串。

String base64 = Base64.getEncoder().encodeToString("I'm a String".getBytes());
System.out.println(base64); // prints SSdtIGEgU3RyaW5n

【讨论】:

  • 应该有办法指定 ASCII 吗?
  • 不,不应该,我真的不明白为什么 C# 会要求这样做。 String.getBytes 提供实际字节,无论字符串是 ASCII 还是 unicode,Base64 将这些字节编码为文本。当您解码 Base64 字节时,您必须说明编码的字节是 ASCII 还是 unicode 或其他什么
猜你喜欢
  • 2018-08-07
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
相关资源
最近更新 更多