我一直在努力让程序的一部分工作。经过大约一周的反复试验,我觉得没有任何帮助我能够做到这一点。将InputStream.read()转换为数字(非整数)
以下是这种情况: 我已经编写了一个应用程序,它使用套接字通过TCP
从设备读取数据。设备发送的所有数据都以字节表示,而不是字符串。每当我谷歌InputStream
,我得到的是“如何将InputStream
转换为字符串”。
目前我可以将InputStream
中的数据读入ArrayList<Integer>
。但是,这些是整数,而不是小数。
下面是由所述设备发送的(UNIX)的一个例子TimeStamp
,读入的整数:
0 0 1 80 59 165 176 64(编辑,复制1个字节太多)
我已经在这里尝试了很多,并且还没有成功将这些转换为正确的UNIX时间戳。它应该被翻译成1444109725(这是2015年6月10日@ 5:35(UTC))。
任何能帮助我的人?提前致谢!
- 编辑 -
感谢所有的答案下面我已经能够创建用于进入数据工作“解析器”。我所要做的就是将字节/整数转换为长整型值。由于我的传入数据由多个不同长度的值组成,因此无法将其全部读取为Long,因此我必须迭代te数据,例如获取时间戳的8个字节/整数,并使用此方法创建可读的unix时间戳:
public long bytesToLong(int[] bytes) {
long v = 0 ;
for (int i : bytes) {
v = (v << 8) | i;
} return v;
}
你能告诉我们你到目前为止试过的东西吗? – consuela
以字节读取数字并相应地组合长(位移运算符)。 – Thomas
这就是* 9 *字节......这似乎不太可能是Unix时间戳。 –