CSharp到FSharp:使用十六进制的字节数组

时间:2015-08-23 01:49:21

标签: f#

我正在查看以下C#代码:

static readonly byte[] OnFrame = { 0x01 };
static readonly byte[] OffFrame = { 0x02 };

有人能告诉我如何在FSharp中写出来吗?

2 个答案:

答案 0 :(得分:3)

在F#中,你(几乎)不需要指定类型(除非你想要),默认值是不可变的(即你也不需要指定readonly)。数组声明使用管道括号语法[| |]表示。

您是否需要明确static取决于您在何处声明:如果您需要将其作为课程的一部分,则必须执行static member,否则你可以做let。我强烈建议你自问:你真的需要它作为课程的一部分吗?

以上所述,这将是代码:

let OnFrame = [| 0x01uy |]
let OffFrame = [| 0x02uy |]

uy部分表示"无符号字节&#34 ;;如果没有,则值为int

我还强烈建议你考虑一下你是否真的需要一个数组或一个列表就足够了,但是如果不知道更广泛的背景,我无法明确地说出来。

答案 1 :(得分:2)

以同样的方式指定任何其他array in F#:使用[| |]语法。

byte文字使用uy后缀,十六进制文字使用0x前缀:

let onFrame = [| 0x01uy |]
let offFrame = [| 0x02uy |]

您可以在MSDN上看到更多信息:Literals (F#)