Java android.util.Base64编码/解码标志参数
根据Javadoc,android.util.Base64.decode()接受两个参数:文本和“标志”。这些标志采用int形式,并且(我引用):Java android.util.Base64编码/解码标志参数,java,android,base64,Java,Android,Base64,根据Javadoc,android.util.Base64.decode()接受两个参数:文本和“标志”。这些标志采用int形式,并且(我引用): 标志控制解码输出的某些功能。通过默认值解码标准Base64。 首先,感谢决定写一篇模糊的Javadoc的人。我看到Base64有一些枚举字符串,实际上,我们一直使用Base64.NO_WRAP作为标志。然而,在这个特定的实例中,我们需要使用两个标志:NO_WRAP和URL_SAFE 如何指定这两个标志?我们试着用管子(“|”)把它们分开,但没有成功
标志控制解码输出的某些功能。通过默认值解码标准Base64。
首先,感谢决定写一篇模糊的Javadoc的人。我看到Base64有一些枚举字符串,实际上,我们一直使用Base64.NO_WRAP作为标志。然而,在这个特定的实例中,我们需要使用两个标志:NO_WRAP和URL_SAFE
如何指定这两个标志?我们试着用管子(“|”)把它们分开,但没有成功
import android.util.Base64;
public class Foo {
public static void main(String[] args) {
String urlSafeBase64EncodedString = getUrlSafeBase64EncodedString();
int flags = ????????; //Need both Base64.NO_WRAP and Base64.URL_SAFE
String decodedString = Base64.decode(urlSafeBase64EncodedString, flags);
}
}
谢谢您的时间。传递给函数的int标志通常定义为按位或,以实现组合效果 你通常可以通过观察常量值来判断,它们会变成0 1 2 4 8 16 对于您的问题,您可以使用以下内容定义您的旗帜:
int flags = Base64.NO_WRAP | Base64.URL_SAFE;
对于
kotlin
,您可以使用
val flag = Base64.URL_SAFE or Base64.NO_WRAP
“那没用”-那它用了什么?(你到底写了什么?)如果你要抱怨别人含糊其辞,那么你自己说得准确一点会有帮助:)它什么也没做。它无法解码Base64字符串。我已经说过,我用一个管道符号分隔了两个标志……这怎么不清楚呢?完全可能是语法错误,例如“Base64.NO_WRAP | URL_SAFE”。当然,这会导致编译错误。。。这也会被“那没做”所涵盖。现在,“它什么也没做”和“它没能解码Base64字符串”不是完全一样的事情。它怎么没能破译呢?是否存在异常,是否给出空结果,是否挂起?用管道分隔,如
int flags=Base64.NO_WRAP | Base64.URL_SAFE代码>?我想@jonskeet想知道decode()是否抛出了一个异常,返回的字符串是否保持不变,是否执行了其中一个标志,但没有执行另一个标志,等等。我刚刚检查了代码,这正是您希望它执行的操作。如果它没有满足你的期望,那不是因为它的模棱两可或者没有在任何地方记录在案。请描述更多您正在寻找的输出,也许我们可以帮助您。但是,通常的“不打包”安全机制正如预期的那样起作用。我将不得不写一封非常严厉的信给我的CS教授,因为我从来没有明确说明这一点。我以后会把它归档的。工作得很好!非常感谢。