2013-11-26 42 views
-1

我在這裏我的密碼學課堂上給出了一個問題:如何刪除Java中的最低有效位?

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))); 
} 

任何幫助,將不勝感激。謝謝。

+1

你想要什麼預期的輸出? – Masudul

+3

如果你不知道如何做到這一點,你可能沒有準備好這門課程。提示:右移。 –

回答

1

如果你有一個byte b你可以用boolean lsb = (b & 1) == 1;得到最低有效位。如果lsb爲真,則lsb爲1 ...否則爲0.要刪除lsb,請將b右移1(例如b >>= 1)。

0

月1日 - 使用長/長爲64位

2日 - 取消設置最後一位,並獲得7剩餘的 - 你可以(由2或除以)轉移1

鴻溝的關鍵爲8個字符

移位每個字符除以2(這將刪除位)

然後把8個字符與7位一起在一個長(56位)