我的问题是在scala中将字符串转换为long。 其中字符串格式为Mac地址。 为如:如何将Mac地址作为字符串格式转换为scala中的Long?
"fe:1a:90:20:00:00" and "a0:b4:ac:c0:00:01"
如何使用Scala的长型转换。
我的问题是在scala中将字符串转换为long。 其中字符串格式为Mac地址。 为如:如何将Mac地址作为字符串格式转换为scala中的Long?
"fe:1a:90:20:00:00" and "a0:b4:ac:c0:00:01"
如何使用Scala的长型转换。
这可有助于:
mac.split(":").map(Integer.parseInt(_,16)).foldLeft(0L) {case (acc,item) => acc*256+item}
第一操作
mac.split(":")
给出字符串数组,像阵列( “FE”, “1A”, “90”, “20”,“00 ”, “00”)。这个阵列的每个产品的基16编码的整数,因此我们可以将其与转换成的整数数组:
val arrayOfInts = mac.split(":").map(Integer.parseInt(_,16))
这给出了第一示例阵列(254,26,144,32,0,0)。
最后要做的就是将整数数组转换为long。阵列的每个项目是在范围[0,255],等等256乘法恰好足以容纳值,最后的操作
arrayOfInts.foldLeft(0L) {case (acc,item) => acc*256+item}
执行转换。它从0L和每个项目的乘法结果,对256开始,并增加了项目:
(((((((0L*256 + 254)*256 + 26)*256) + 144)*256 + 32)*256 + 0)*256) + 0
你想获得一个每个地址长或6%的地址多头(一个很长的部分)?在第一种情况下,移除冒号并在第二种情况下分析冒号中的十六进制数字,然后解析。 – Thomas
每个地址6个长码 – sk1007
为什么'长',然后呢?你知道每个值都是8位...... –