首先,这听起来像这里的问题: How to convert a byte array to its numeric value (Java)?
但我的Byte-Array的起源是一个字符串,如下所示:
byte[] foo = new byte[8];
foo = "12345678".getBytes();
是否有更快的方式(是的,它真的是这么快做)而不是
Integer.parseInt(new String(foo))
?
字符串仅包含表示整数的数字。
答案 0 :(得分:1)
试试这个
int res = 0;
for(int i = foo.length -1, m = 1; i >=0; i--, m *= 10) {
res += (foo[i] & 0xF) * m;
}
答案 1 :(得分:1)
您可以尝试这样的事情:
byte foo[] = "12345678".getBytes();
//Since it is an 'integer' essentially, it will contain ASCII values of decimal digits.
long num = 0; //Store number here.
for(int i = foo.length - 1; i >= 0; i--)
{
num = num * 10 + (foo[i] - '0'); // or (foo[i] - 48) or (foo[i] & 0xf)
}
num
存储所需的号码。
预防措施:请确保仅使用十进制数字。
修改强>
<机构在致电getBytes()
String
的{{1}}时,返回的"12345678"
如下:
我们看到的值是等效字符的 ASCII 或 Unicode 值。
有几种方法可以将它们的等效字符提取为byte[]
s:
int
的排列,即'0','1','2'等以所需的顺序完成 - 升序和顺序,我们可以通过分割chars
即48。'0'=&gt; 48 =&gt; 11 0000
我们注意到,如果我们提取最后4位,我们会得到所需的'0'
。
为此,我们需要以下列方式提取它们。
我们来int
,即50
foo[1]
因此,获得所需的数字。它必须以 50 & 0xf (original)
= 50 & 15 (in Decimal)
= 11 0010 & 1111 (in Binary)
= 0010 (result)
= 2 (Decimal)
来add
以正确的方式(我期望每个程序员都有一些知识)。