如何在Java中将字符串转换为位(不是字节)或位数组(我将在稍后进行一些操作)以及如何转换为整数数组(每32位转换为int然后将其放入数组中) ?我从未在Java中进行过这种转换。
String->array of bits->(some operations I'll handle them)->array of ints
答案 0 :(得分: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);
答案 1 :(得分: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);
答案 2 :(得分:0)
答案 3 :(得分:0)
好吧,也许你可以跳过String to bits转换并直接转换为int数组(如果你想要的是每个字符的UNICODE值),使用s.toCharArray()
s
是一个String
变量。
答案 4 :(得分:0)
这会将“abc”转换为字节,然后代码将在相应的ASCII代码中打印“abc”(即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]+" ");
}
答案 5 :(得分: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();
答案 6 :(得分:0)
请注意,string是一系列字符,在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+" ");
}