5

如何在Java中将字符串转换为位(不是字节)或位数组(我稍后会做一些操作)以及如何转换为整数数组(每32位转换为整数然后将其放入数组中?我有从未在 Java 中进行过这种转换。

String->array of bits->(some operations I'll handle them)->array of ints
4

7 回答 7

9
ByteBuffer bytes = ByteBuffer.wrap(string.getBytes(charset));
  // you must specify a charset
IntBuffer ints = bytes.asIntBuffer();
int numInts = ints.remaining();
int[] result = new int[numInts];
ints.get(result);
于 2012-07-06T18:21:44.290 回答
2

这就是答案

String s = "foo";
      byte[] bytes = s.getBytes();
      StringBuilder binary = new StringBuilder();
      for (byte b : bytes)
      {
         int val = b;
         for (int i = 0; i < 8; i++)
         {
            binary.append((val & 128) == 0 ? 0 : 1);
            val <<= 1;
         }
      //   binary.append(' ');
      }
      System.out.println("'" + s + "' to binary: " + binary);
于 2012-07-07T12:11:23.700 回答
0

你正在寻找这个

string.getBytes();

不是列表,它是一个数组,但您可以稍后使用它,甚至将其转换为整数。

于 2012-07-06T18:20:05.700 回答
0

好吧,也许您可​​以跳过字符串到位的转换并直接转换为整数数组(如果您想要的是每个字符的 UNICODE 值),使用s.toCharArray()wheres是一个String变量。

于 2012-07-06T18:24:14.953 回答
0

这会将“abc”转换为字节,然后代码将以相应的 ASCII 码(即 97 98 99)打印“abc”。

byte a[]=new byte[160];
String s="abc";
a=s.getBytes();
for(int i=0;i<s.length();i++)
{
    System.out.print(a[i]+" ");
}
于 2012-07-06T18:24:15.137 回答
0

可能是这样(我当前的计算机中没有编译器,也没有测试它是否工作,但它可以帮助你一点):

String st="this is a string";
byte[] bytes=st.getBytes();
List<Integer> ints=new ArrayList<Integer>();
ints.addAll(bytes);

如果编译器失败

ints.addAll(bytes);

你可以用

for (int i=0;i<bytes.length();i++){
   ints.add(bytes[i]);
}

如果你想得到准确的数组:

ints.toArray();
于 2012-07-06T18:25:56.200 回答
0

请注意,字符串是一个字符序列,在 Java 中,每个字符数据类型都是一个 16 位 Unicode 字符。它的最小值为“\u0000”(或 0),最大值为“\uffff”(或 65,535,包括在内)。为了获得 char 整数值,请执行以下操作:

    String str="test";
    String tmp="";

    int result[]=new int[str.length()/2+str.length()%2];
    int count=0;

    for(char c:str.toCharArray()) {
         tmp+=Integer.toBinaryString((int)c);
         if(tmp.length()==14) {
            result[count++]=Integer.valueOf(tmp,2);
            //System.out.println(tmp+":"+result[count-1]);
            tmp="";
         }
    }

    for(int i:result) {
        System.out.print(i+" ");
    }
于 2012-07-06T18:35:43.120 回答