java 中字符串和整型数组间的转换

String="abcdefgh"如何转换成一个64位的一维整数数组。在这个数组中前八位对应a的二进制数。接下来的八位对应b的二进制数。以此类推。
还有就是反过来转换,一个64位的一维整数数组。每八位表示一个字符,如何将其转换成字符串。谢

public class StringHex {

//将 ENCODE_BITS = 8 则不支持 汉字的编码, 16支持任意字符的编码
private static final int ENCODE_BITS = 16;

public StringHex() {
}

public static void main(String[] args) {
//为了支持全部的unicode字符 应该用16位来存放字符的二进制代码
String test = "@dasd&^%$#$%#@#$@#$你哈啊卡仕达是的";
System.out.println("Input String: " + test);
int [] is = StringHex.stringToInts(test);
System.out.print("Encode arrays: ");
for(int j: is) {
System.out.print(j);
}
System.out.println("\nDecode String: " + StringHex.intsToString(is));
}

public static String intsToString(int [] ints) {
int [] ts = new int [StringHex.ENCODE_BITS];
StringBuffer sb = new StringBuffer();
for(int i = 0; i < ints.length / StringHex.ENCODE_BITS ; i ++) {
int j = i * StringHex.ENCODE_BITS;
for(int k = j; k < j + StringHex.ENCODE_BITS; k ++) {
ts[k - j] = ints[k];
}
sb.append(StringHex.intsToChar(ts));
}
return sb.toString();
}

public static int[] stringToInts(String dist) {
int len = dist.length();
int [] ints = new int[StringHex.ENCODE_BITS * len];
for(int i = 0; i < len; i ++) {
char [] cs = StringHex.charToInts(dist.charAt(i)).toCharArray();
int j = i * StringHex.ENCODE_BITS;
for(int k = j; k < j + StringHex.ENCODE_BITS; k ++) {
ints[k] = Integer.parseInt(cs[k - j] + "");
}
}
return ints;
}

public static String charToInts(char c) {
String bin = Integer.toBinaryString(c);
int len = StringHex.ENCODE_BITS - bin.length();
for (int i = 1; i <= len; i++) {
bin = "0" + bin;
}
return bin;
}

public static char intsToChar(int[] ints) {
int codePoint = 0;
for (int i = ints.length; i >= 1; i--) {
codePoint += Math.pow(2, i - 1) * ints[ints.length - i];
}
return Character.toChars(codePoint)[0];
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-02
通过数组循环的方式,最终拼接成字符串
1、定义一个整型数组
int[] arr = new int[3];//定义一个长度3的整型数组

2、拼接成字符串

String s = "";
for(int i=0;i<arr.length;i++){
s = s + arr[i];//拼接成字符串,最终放在变量s中
}
第2个回答  2009-10-18
楼上的比我想的全面多了,本来不该献丑,但是写了半天也怪不容易的,全当赚2分辛苦费吧。
你说的有点不明白,我的理解是,你要把像“abcdefg”这样的字符串转换为
一个字符串数组,这个数组是他的二进制表示
01100001
01100010
01100011
01100100
01100101
01100110
01100111 程序如下:
......................................
public class StrAndInt{

public StrAndInt() {

}
public static void main (String[] args) {
String[] s = StrAndInt.strToInt("abcdefg");
for(int i=0;i<s.length;i++){
System.out.println(s[i]);
}
System.out.println(StrAndInt.intToStr(s));
}
public static String[] strToInt(String s){
char ch;
String[] sr = new String[s.length()];
for(int i=0;i<sr.length;i++){
ch = s.charAt(i);
sr[i] = Integer.toBinaryString(ch);
int len = 8 - sr[i].length();
for (int j = 0; j <len; j++) {
sr[i] = "0"+sr[i];
}
}
return sr;
}
public static String intToStr(String[] s){
StringBuffer sbr = new StringBuffer("");
char ch;
for(int i=0;i<s.length;i++){
// if(s[i].length()>8)return "error";
try{
ch = (char)Integer.parseInt(s[i],2);
}catch(Exception e){
return "error";
}
sbr.append(ch);
}
return sbr.toString();
}

}
第3个回答  2009-10-18
我做出来了
但是看到1楼的 我惭愧了
1楼的一看就知道 使用java 熟练度很高啊
整个代码明了清晰啊