前言
与算法同事进行jni调用的过程中出现一个问题,之前做的Dome中传输数据定死为double[]类型,后将Dome中的代码应用到实际项目中发现项目中存储的数据类型与之前同事定义的不一样,为String类型,因此需要将String转换成double[]类型
代码
之前同事定死的交互数据:
double[] intrinsicMatrix= {4.849765167158351e+02,0,7.115376394147976e+02,3.290062519965750e+02,2.028886447588004e+02};
实际存储的的交互数据:
String intrinsicMatrix= "[4.849765167158351e+02,0,7.115376394147976e+02,3.290062519965750e+02,2.028886447588004e+02]";
转换代码:
String intrinsicMatrixStr= "[4.849765167158351e+02,0,7.115376394147976e+02,3.290062519965750e+02,2.028886447588004e+02]";
List<Double> intrinsicMatrixList = JSON.parseObject(intrinsicMatrixStr, new TypeReference<List<Double>>(){});
Double[] intrinsicMatrix = new Double[intrinsicMatrixList.size()];
intrinsicMatrixList.toArray(intrinsicMatrix);
//输出:Double[] intrinsicMatrix = {484.9765167158351,0,711.5376394147976,329.0062519965750,202.8886447588004}
补充:
1、此处使用阿里的FastJson的泛型工具类;
2、Double中的"e+02"的意思是在前面小数的情况下乘以10的二次方,同理"e+03"就是乘以10的三次方