Javaで文字列をビット(バイトではない)またはビット配列に変換する方法(後でいくつかの操作を行います)およびintの配列に変換する方法(32ビットごとにintに変換してから配列に入れますか? Javaでこの種の変換を行ったことはありません。
String->array of bits->(some operations I'll handle them)->array of ints
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);
これが答えです
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);
s.toCharArray()
おそらく、文字列からビットへの変換をスキップして、int の配列に直接変換できます (各文字の UNICODE 値が必要な場合)。wheres
はString
変数です。
これにより、「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]+" ");
}
そうかもしれません(現在のコンピューターにはコンパイラがなく、動作するかどうかはテストしていませんが、少しは役立ちます):
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();
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+" ");
}