/** * 获取OSS文件的CRC64值. * * @param fileUrl OSS文件的URL * @return CRC64值 */ private static String getOssCRC64(String fileUrl) {
HttpURLConnection conn = null; try { URL url = new URL(fileUrl); conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(30000); conn.setReadTimeout(60000); conn.setRequestMethod("HEAD"); conn.connect(); return conn.getHeaderField("x-oss-hash-crc64ecma"); } catch (Exception e) { logger.error("获取文件的OSSCRC64时出错", e); } finally { if (conn != null) { conn.disconnect(); } } return null; }
返回的值类似这样:16436654983496349856
本地用CRC64代码,获取文件的结果是:-2010089090213201760
完全对不上。
后来debug代码才发现是这样的: BigInteger bi = new BigInteger("16436654983496349856"); System.out.println(bi.longValue()); 结果就是-2010089090213201760。
研究了一天,伤不起。
|