long - Cómo convertir cadenas en bits y luego en int array-java
primitive data types java (7)
Bueno, tal vez puede omitir la conversión String to bits y convertir directamente a una matriz de ints (si lo que quiere es el valor UNICODE de cada carácter), usando s.toCharArray()
donde s
es una variable String
.
¿Cómo convertir una cadena en bits (no bytes) o una matriz de bits en Java (haré algunas operaciones más adelante) y cómo convertir en una matriz de entradas (cada 32 bits se convierten en int y luego lo colocan en la matriz? Nunca hice este tipo de conversión en Java.
String->array of bits->(some operations I''ll handle them)->array of ints
Esto convertirá "abc" en byte y luego el código imprimirá "abc" en el código ASCII respectivo (es decir, 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]+" ");
}
Puede ser así (no tengo compilador en mi computadora actual y no pruebo si funciona, pero puede ayudarte un poco):
String st="this is a string";
byte[] bytes=st.getBytes();
List<Integer> ints=new ArrayList<Integer>();
ints.addAll(bytes);
Si el compilador falla en
ints.addAll(bytes);
puedes reemplazarlo con
for (int i=0;i<bytes.length();i++){
ints.add(bytes[i]);
}
y si quieres obtener exactamente una matriz:
ints.toArray();
Tenga en cuenta que la cadena es una secuencia de caracteres, y en Java cada tipo de datos es un único carácter Unicode de 16 bits. Tiene un valor mínimo de ''/ u0000'' (o 0) y un valor máximo de ''/ uffff'' (o 65,535 inclusive). Para obtener un valor entero de char, haz esto:
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+" ");
}
Usted está buscando esto :
string.getBytes();
No lista, es una matriz pero puede usarla más adelante, incluso para convertirla en enteros.
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);
ESTA ES LA RESPUESTA
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);