快叫我java小菜鸟 2019-11-25 10:13 采纳率: 100%
浏览 4807

apache Base64源码最后validateCharacter方法为什么会&上补0的个数?

/**
     * <p>
     * Validates whether the character is possible in the context of the set of possible base 64 values.
     * </p>
     *
     * @param numBits number of least significant bits to check
     * @param context the context to be used
     *
     * @throws IllegalArgumentException if the bits being checked contain any non-zero value
     */
    private long validateCharacter(final int numBitsToDrop, final Context context) {
        i**f ((context.ibitWorkArea & numBitsToDrop) != 0)** {
        throw new IllegalArgumentException(
            "Last encoded character (before the paddings if any) is a valid base 64 alphabet but not a possible value");
        }
        return context.ibitWorkArea >> numBitsToDrop;
    }

我很疑惑的地方是:验证结尾两个或四个比特为0,不应该是&3 或者 &15吗?详细的代码不再贴了,有能解惑的大神先行拜谢了。

问题解决参见:问题解决结果

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-11-25 12:40
    关注

    numBitsToDrop
    顾名思义,这个参数的意思是需要丢弃的位数

    评论

报告相同问题?

悬赏问题

  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区