您好如何将String转换为int数组。我需要它来进行一些调整。 只是将一个字符串转换为32位值。
我尝试了但是没有用。也许将String转换为BigInteger然后将其转换为原始String然后转换为int数组会起作用吗?
String s = "Alice";
int[] tab = s.getBytes();
答案 0 :(得分:2)
如果要将String转换为int数组,请阅读Joel's article on String encoding,这并不像您想象的那么明显。
答案 1 :(得分:2)
我觉得这样的事情适合你:在这里找到它:http://pro-programmers.blogspot.com/2011/05/java-byte-array-into-int-array.html
public int[] toIntArray(byte[] barr) {
//Pad the size to multiple of 4
int size = (barr.length / 4) + ((barr.length % 4 == 0) ? 0 : 1);
ByteBuffer bb = ByteBuffer.allocate(size *4);
bb.put(barr);
//Java uses Big Endian. Network program uses Little Endian.
bb.order(ByteOrder.BIG_ENDIAN);
bb.rewind();
IntBuffer ib = bb.asIntBuffer();
int [] result = new int [size];
ib.get(result);
return result;
}
要打电话:
String s = "Alice";
int[] tab = toIntArray(s.getBytes());
答案 2 :(得分:0)
尝试:
String s = "1234";
int[] intArray = new int[s.length()];
for (int i = 0; i < s.length(); i++) {
intArray[i] = Character.digit(s.charAt(i), 10);
}
答案 3 :(得分:0)
更改为字节:byte[] tab = s.getBytes();
final String s = "54321";
final byte[] b = s.getBytes();
for (final byte element : b) {
System.out.print(element+" ");
}
输出:
53 52 51 50 49
修改强>
Eclipse在(int)
中删除了 System.out.print((int) element+" ");
强制转换
除非您想要投射int myInteger = (int) tab[n]
,否则您必须在新byte[]
int[]
答案 4 :(得分:0)
String s = "Alice";
byte[] derp = s.getBytes();
int[] tab = new int[derp.length];
for (int i=0; i< derp.length; i++)
tab[i] = (int)derp[i];
答案 5 :(得分:0)
如果没有编码,则无法将字符串转换为字节 您需要使用此已存在的方法:
public static final byte[] getBytesUtf8( String string )
{
if ( string == null )
{
return new byte[0];
}
try
{
return string.getBytes( "UTF-8" );
}
catch ( UnsupportedEncodingException uee )
{
return new byte[]
{};
}
}
}
然后将其更改为int数组,如下所示:byte[] bAlice
int[] iAlice = new int[bAlice.length];
for (int index = 0; index < bAlice.length; ++index) {
iAlice [index] = (int)bAlice[index];
}
答案 6 :(得分:0)
widening primitive conversion的规则不适用于基本类型的数组。例如,在Java中为一个整数分配一个字节是有效的:
byte b = 10;
int i = b; //b is automatically promoted (widened) to int
但是,原始数组的行为方式不同,因此,您不能假设byte[]
数组会自动提升为int[]
数组。
但是,您可以手动强制提升字节数组中的每个项目:
String text = "Alice";
byte[] source = text.getBytes();
int[] destiny = new int[source.length];
for(int i = 0; i < source.length; i++){
destiny[i] = source[i]; //automatically promotes byte to int.
}
对我来说,这是最简单的方法。