android.util.Base64 encode/decode flags 参数

2022-09-03 17:17:31

根据Javadoc的说法,android.util.Base64.decode()需要两个参数:文本和“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);
    }
}

感谢您抽出宝贵时间接受采访。


答案 1

传递给函数的 int 标志通常定义为按位 ORed,以实现组合效果。

您通常可以通过查看常量值来判断,它们将变为0 1 2 4 8 16。

至于您的问题,您可以使用以下内容作为标志定义:

int flags = Base64.NO_WRAP | Base64.URL_SAFE;

答案 2

因为您可以使用kotlin

val flag = Base64.URL_SAFE or Base64.NO_WRAP

推荐