如何从base64编码字符串获取原始文件大小

时间:2019-05-15 01:24:40

标签: go

我想从使用base64编码文件获得的字符串变量中获取原始文件的大小。

s
Out[878]: 
Month  AgentID  2017-01  2017-02   ...     2017-10  2017-11  2017-12
0          101      2.0      4.0   ...         0.0      0.0      1.0
1          102      2.0      3.0   ...         2.0      1.0      4.0
[2 rows x 11 columns]

如何从 package main import ( "bufio" "encoding/base64" "io/ioutil" "os" ) func encodeFile(file string) string { f, err := os.Open(file) if err != nil { panic(err) } reader := bufio.NewReader(f) content, _ := ioutil.ReadAll(reader) encoded := base64.StdEncoding.EncodeToString(content) return encoded } func main() { datas := encodeFile("/tmp/hello.json") //how to get file size from datas } 获取文件大小? ks。

2 个答案:

答案 0 :(得分:0)

好吧,base64编码的字符串的长度与原始文件的长度不同。要获得原始尺寸,您可以执行以下操作: 1.在函数encodeFile中返回len(content),即原始文件的大小。

  1. 或者您可以使用以下公式计算文件大小:

x =(n *(3/4))-y 其中:

  1. x是文件大小,以字节为单位
  2. n是len(datas)
  3. 如果Base64以'=='结尾,则y为2,如果Base64以'='结尾,则为1。

答案 1 :(得分:0)

这应该做到:

import functools

def gini_node(node):
    count = sum(node)
    gini = functools.reduce(lambda p,c: p + (1 - (c/count)**2), node)
    print(count, gini)
    print(1 - (node[0]/count)**2, 1 - (node[1]/count)**2)
    return gini

def gini (groups):
    counts = [ sum(node) for node in groups ]
    count = sum(counts)
    proportions = [ n/count for n in counts ]

    return sum([ gini_node(node) * proportion for node, proportion in zip(groups, proportions)])

# test
print(gini([[175, 330], [220, 120]]))

游乐场验证:https://play.golang.org/p/Y4v102k74V5