|

100精币
1.计算出文件的size
2.计算出md5值,比如"468740f5b1629aa305db99e56e15cd88"
3.截取前16位,"468740f5b1629aa3"
4.转换成unsigned int64,比如:5082102128498088611
5.获取文件的size,如果size为0,直接返回
6.对文件大小取模,r1=5082102128498088611%23512=17579
7.得出range:[r, r+8)
8.如果r+8>=size,调整为[r, size)
2.读取本地文件的range值的byte,计算proof_code
base64(filedata[r,r+8))
示例代码
type ProofRange struct {
Start int64
End int64
}
func getProofRange(input string, size int64) (*commonmodel.ProofRange, error) {
if size == 0 {
return &commonmodel.ProofRange{}, nil
}
tmpStr := utils.MD5Str(input)[0:16]
tmpInt, err := strconv.ParseUint(tmpStr, 16, 64)
if err != nil {
return nil, err
}
index := tmpInt % uint64(size)
pr := &commonmodel.ProofRange{
Start: int64(index),
End: int64(index) + 8,
}
if pr.End >= size {
pr.End = size
}
return pr, nil
}
困扰我好几天了,真是看不懂这个
|
最佳答案
查看完整内容
能写但是懒的写
给你建议 你自己写吧
这里需要用到 大数 不然易是会丢失精度的
新建三个 类型 大数 的变量
md5=取数据摘要(读入文件())
md5=取文本左边(md5,16)
a,b,c
a.导入文本 (md5)
b.导入数字 (23512)
c=a.求余 (b)
r1=c.导出整数 ()
其他的不难 你自己写吧
补充内容 (2023-9-2 10:27):
16位md5转整数 需要用到精易模块 进制_十六到十() ...
|