5

Javaで文字列をビット(バイトではない)またはビット配列に変換する方法(後でいくつかの操作を行います)およびintの配列に変換する方法(32ビットごとにintに変換してから配列に入れますか? 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

s.toCharArray()おそらく、文字列からビットへの変換をスキップして、int の配列に直接変換できます (各文字の UNICODE 値が必要な場合)。wheresString変数です。

于 2012-07-06T18:24:14.953 に答える
0

これにより、「abc」がバイトに変換され、コードは「abc」をそれぞれの ASCII コード (つまり、97 98 99) で出力します。

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.getBytes();

リストではなく配列ですが、後で使用して整数に変換することもできます。

于 2012-07-06T18:20:05.700 に答える
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

string は char のシーケンスであり、Java では各 char データ型は単一の 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 に答える