Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 将电子邮件附件转换为base64_F#_Stream_Base64_Bytearray_C# To F# - Fatal编程技术网

F# 将电子邮件附件转换为base64

F# 将电子邮件附件转换为base64,f#,stream,base64,bytearray,c#-to-f#,F#,Stream,Base64,Bytearray,C# To F#,我想从电子邮件中获取附件并将其转换为base64字符串,以便将其存储为JSON 在C#中,我将以System.IO.Stream的形式获取附件,将其读入字节数组,然后使用Convert.ToBase64String 不过,在F#中,我不确定如何实现这一点(我是一个初学者),而且感觉可能有一种更实用的方法来做事情……?F#将功能性风格与面向对象风格相结合,因此您可以轻松地从F#调用.NET库。有时,有些特定于F#的库为某些任务(如列表处理)提供了更具功能性的样式,但我认为base64编码和流没有类

我想从电子邮件中获取附件并将其转换为base64字符串,以便将其存储为JSON

在C#中,我将以
System.IO.Stream
的形式获取附件,将其读入字节数组,然后使用
Convert.ToBase64String

不过,在F#中,我不确定如何实现这一点(我是一个初学者),而且感觉可能有一种更实用的方法来做事情……?

F#将功能性风格与面向对象风格相结合,因此您可以轻松地从F#调用.NET库。有时,有些特定于F#的库为某些任务(如列表处理)提供了更具功能性的样式,但我认为base64编码和流没有类似的功能

因此,给定一个流,您可以将其读入缓冲区,然后使用.NET类型转换为base64,如下所示:

open System
open System.IO

let stream = // Some stream, for example: new MemoryStream([| 1uy; 2uy; 3uy; 4uy |])
let buffer = Array.zeroCreate (int stream.Length)
stream.Read(buffer, 0, buffer.Length)
Convert.ToBase64String(buffer)

电子邮件附件通常已经在邮件内部的base64中编码。请参阅,以便我可以检查附件是否为base64并按原样使用,这很酷,但如果不是,我仍然需要帮助。非常感谢。Array.zeroCreate是我要找的。此外,我认为我对在F#中使用OO风格有一些偏见,而事实上我应该接受它。