如何删除Java中的最低位?

时间:2013-11-26 05:15:11

标签: java bit

我的密码学课程中遇到了问题:

enter image description here

现在,我想的不是做烦人的笔/纸工作,而是编写一些Java代码。我知道如何使用Java将十六进制字符串转换为二进制字符数组,但我需要知道如何做,删除这些二进制值的最低有效位。

这是我为了找到二进制值而编写的代码:

   public static void main(String[] args) {

String key = "5B5A57676A56676E"; //hexadecimal key
  char[] keyCharArray = key.toCharArray();
  for (int i = 0; i < key.length(); i++) {
    System.out.print(HexToBinary((keyCharArray[i]))+",");

      }
  }

  public static String HexToBinary(char Hex) {
      int i = Integer.parseInt(Character.toString(Hex), 16);
      return String.format("%04d", Integer.parseInt(Integer.toBinaryString(i)));
}

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

如果你有一个byte b,你可以获得boolean lsb = (b & 1) == 1;的最低位。如果lsb为真,则lsb为1 ...否则为0.要删除lsb,请将b右移{(b >>= 1)。

答案 1 :(得分:0)

1st - 使用长/长64位

第二 - 取消最后一位并获得剩下的7位 - 你可以换1(或除以2)

将密钥分成8个字符

将每个char除以2(这将删除该位)

然后将8个字符与7位一起放在一个长(56位)