将符号转换为位java

时间:2012-11-16 12:30:42

标签: java converter symbols bits

我需要将符号转换为位,以便每2个符号= 1个字节= 8位。 例如,如果用户输入为RR,则结果应为00001100。 (只是一个例子)

3 个答案:

答案 0 :(得分:2)

我无法理解你。为什么RR应该是00001100?在十六进制1100中代表字符'C'。

答案 1 :(得分:0)

所以,如果我理解你的问题,那么有两种方法可以解决:简单或困难的方式。

易:

  • 首先,您需要知道要使用的文字是否为十六进制值。
  • 您可以使用键0-9 |创建表示ASCII表的Sorted映射A-H和值代表您的二进制数。

示例:

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");
  • 阅读这两个符号,然后尝试在分类地图中找到二进制代码。
  • 将结果存储到字符串

    String ls_symbols =“AA”; String ls_result =“”;

    for(int ln = 0; ln&lt; ls_symbols.lenght(); ln ++){    ls_result + = lo_binary.get(ls_symbols.charAt(ln)); }

    的System.out.println(ls_result); // AA - &gt; 10101010

硬:

  • 首先,您需要知道要使用的文字是否为十六进制值。
  • 将带有十六进制字符的文字转换为byte []。
  • 将byte []转换为boolean []
  • 结果为true = 1且false = 0

示例:

//你有文字A.这个文字用二进制表示值1010.你有//使用运算符&gt;&gt;&gt;和&amp;将二进制值更改为布尔值

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

答案 2 :(得分:0)

你的问题很混乱,因为你谈到十六进制,然后显示二进制数。无论如何,也许这会有所帮助......这会将输入转换为十六进制。也许你可以用它来准确地计算你需要的东西(这对我来说并不是那么清楚)。

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