Go - 尝试创建一个.pgm文件但最终得到一个二进制文件

时间:2013-08-16 18:28:41

标签: file-io go

我正在读取一个pgm文件,以便对它应用一些过滤器并将结果重写为一个新的pgm文件。但是,我总是最终得到一个二进制文件(vim没有显示值,但像^ G ^ 0 ^ K等东西,文件命令告诉我它是一个数据文件而imagemagick无法打开文件)

我写入文件的代码如下所示:

fd,err := os.Create(filename)
wr := bufio.NewWriter(fd)
//img is of type [][]int and holds the values to be written
str := "P2\n" + filename + "\n" + string(len(img[0])) + ...
if _,err := wr.WriteString(outStr); err != nil {..}

然后在我通过img数组的循环中再做一些。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:4)

string(len(img[0]))不会做你想做的事情。您需要strconv.Itoa

string(len(img[0]))正在创建单个字符串,其中包含len(img[0])的Unicode代码点中的任何一个字符(请参阅the spec section on conversions