我的scala程序(通过tcp)接收一个用python打包的长数字:
Python以这种方式发送长值:
connection.send(struct.pack("!L", 2052))
Scala通过读取流接收:
...
val dataInputStream = new BufferedReader(new InputStreamReader(inputStream, "ISO-8859-1"))
val buf = new Array[Char](4)
dataInputStream.read(buf,0,4)
val realLongNum = bufArrayToLongNumber(buf)
我的buf数组包含一个数字,我可以根据这个数字自己计算所需的长数:
def bufArrayToLongNumber(buf:Array[Char]):Long =
(buf(0)*256*256*256 + buf(1)*256*256 + buf(2)*256 + buf(3))
我希望找到一个现有的函数来做这个计算
有吗?你知道吗
这可能有用。你知道吗
BigInt
实际上有一个采用Array[Byte]
的构造函数(因此必须从Array[Char]
进行转换):这也可以处理你的号码不适合长的情况。您也可以通过调用
bi.longValue
来获得Long
。你知道吗如果你确定你的数字总是适合
Long
,我不确定这是不是比你的更好的解决方案。你知道吗相关问题 更多 >
编程相关推荐