根据Javadoc,android.util.Base64.decode()有两个参数:text和“flags”。这些标志是int形式的(我引用):
flags controls certain features of the decoded output. Pass DEFAULT to decode standard 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);
}
}
感谢您的时间。
答案 0 :(得分:24)
传递给函数的int标志通常被定义为按位OR运算以实现组合效果。
你通常可以通过查看常数值来判断它们是0 1 2 4 8 16 ..
至于您的问题,您可以使用以下内容进行标记定义:
int flags = Base64.NO_WRAP | Base64.URL_SAFE;
答案 1 :(得分:2)
对于kotlin
,您可以使用
val flag = Base64.URL_SAFE or Base64.NO_WRAP