2シンボルごとに= 1バイト= 8ビットになるように、シンボルをビットに変換する必要があります。たとえば、ユーザー入力がRR
存在する場合00001100
、結果として存在する必要があります。(ほんの一例)
3 に答える
私はあなたを理解できません。なぜ RR は 00001100 でなければならないのですか? 16 進数では、1100 は文字「C」を表します。
16進数について話し、次に2進数を表示するため、質問は混乱を招きます。とにかく、これは役立つかもしれません...これは入力を16進数に変換します。たぶん、あなたはそれを使ってあなたが必要としているものを正確に理解することができます(それは私にはそれほど明確ではありません)。
import java.math.BigInteger;
public class MyTest {
public static void main(String[] args) {
String input = "RR";
System.out.println(toHex(input));
}
public static String toHex(String arg) {
return String.format("%x", new BigInteger(1, arg.getBytes()));
}
}
したがって、あなたの質問を理解した場合、解決するための 2 つのオプションがあります。簡単な方法と難しい方法です。
簡単:
- まず、使用するリテラルが 16 進数値であるかどうかを知る必要があります。
- キー 0-9 | を使用して、ASCII テーブルを表すソート済みマップを作成できます。AH と値は 2 進数を表します。
例:
SortedMap<Character, String>
lo_binary = new TreeMap<Character, String>();
lo_binary.put('0', "0000");
lo_binary.put('1', "0001");
lo_binary.put('2', "0010");
lo_binary.put('3', "0011");
lo_binary.put('4', "0100");
lo_binary.put('5', "0101");
lo_binary.put('6', "0110");
lo_binary.put('7', "0111");
lo_binary.put('8', "1000");
lo_binary.put('9', "1001");
lo_binary.put('A', "1010");
lo_binary.put('B', "1011");
lo_binary.put('C', "1100");
lo_binary.put('D', "1101");
lo_binary.put('E', "1110");
lo_binary.put('F', "1111");
- 2 つのシンボルを読み取り、バイナリ コードをソート マップで検索してみてください。
結果を文字列に格納します
文字列 ls_symbols = "AA"; 文字列 ls_result = " ";
for (int ln=0; ln < ls_symbols.length(); ln++) { ls_result += lo_binary.get(ls_symbols.charAt(ln)); }
System.out.println(ls_result); // AA -> 10101010
難しい:
- まず、使用するリテラルが 16 進数値であるかどうかを知る必要があります。
- 16 進文字を含むリテラルを byte[] に変換します。
- byte[] を boolean[] に変換します
- 結果は true = 1 および false = 0 です。
例:
// リテラル A はありますか。このリテラルは値 1010 をバイナリで表します。// 演算子 >>> と & を使用して、バイナリ値をブール値に変更しますか
1010
boolean = (1010 & 1000) == 1000 // (1000 = represents 0x80)
boolean = true (1);
1010 >>> 0100
boolean = (0100 & 1000) == 0000
boolean = false (0);
0100 >>> 1000
boolean = (1000 & 1000) == 1000
boolean = true (1);
1000 >>> 0000
boolean = (0000 & 1000) == 0000
boolean = false (0);