ArrayPrinter 0.2.0
dotnet add package ArrayPrinter --version 0.2.0
NuGet\Install-Package ArrayPrinter -Version 0.2.0
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="ArrayPrinter" Version="0.2.0" />
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件以引用该包。
paket add ArrayPrinter --version 0.2.0
NuGet 团队不提供对此客户端的支持。请联系其 维护者 以获得支持。
#r "nuget: ArrayPrinter, 0.2.0"
#r 指令可以用于 F# Interactive 和多语言笔记本。将其复制到交互式工具或脚本的源代码中以引用包。
// Install ArrayPrinter as a Cake Addin #addin nuget:?package=ArrayPrinter&version=0.2.0 // Install ArrayPrinter as a Cake Tool #tool nuget:?package=ArrayPrinter&version=0.2.0
NuGet 团队不提供对此客户端的支持。请联系其 维护者 以获得支持。
数组打印机
一个用于以可读方式格式化字节数组的 F# 库。
F# 不提供一种简单的方法来可视化字节数组(据我所知)。例如,通过 printfn "%A"
输出如下的数组看起来是这样
"eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ" |> System.Convert.FromBase64String
...
[|123uy; 34uy; 115uy; 117uy; 98uy; 34uy; 58uy; 34uy; 49uy; 50uy; 51uy; 52uy;
53uy; 54uy; 55uy; 56uy; 57uy; 48uy; 34uy; 44uy; 34uy; 110uy; 97uy; 109uy;
101uy; 34uy; 58uy; 34uy; 74uy; 111uy; 104uy; 110uy; 32uy; 68uy; 111uy; 101uy;
34uy; 44uy; 34uy; 105uy; 97uy; 116uy; 34uy; 58uy; 49uy; 53uy; 49uy; 54uy; 50uy;
51uy; 57uy; 48uy; 50uy; 50uy; 125uy|]
数组打印机库提供了一种方法来美化打印此类数组。
ArrayPrinter.printArray PrinterOptions.defaults myArray
返回字符串
0000 7B 22 73 75 62 22 3A 22 31 32 33 34 35 36 37 38 {"sub":"12345678
0010 39 30 22 2C 22 6E 61 6D 65 22 3A 22 4A 6F 68 6E 90","name":"John
0020 20 44 6F 65 22 2C 22 69 61 74 22 3A 31 35 31 36 .Doe","iat":1516
0030 32 33 39 30 32 32 7D 239022}
用法
<NuGet>
可以通过 ArrayPrinter.PrinterOptions
来控制输出。默认情况下,十六进制、十进制、八进制和二进制的显示是通过 PrinterOptions.*Defaults
提供的。默认的 PrinterOptions.defaults
使用十六进制。
输出包括三部分:行标题、数组内容和内容的解释。可以禁用行标题和内容解释
// Disable the data part.
ArrayPrinter.printArray ({ PrinterOptions.defaults with WithData = false }) myArray
// Disable the header part.
ArrayPrinter.printArray ({ PrinterOptions.defaults with WithHeader = false }) myArray
此外,还可以调整行的宽度
// Use looong rows
ArrayPrinter.printArray ({ PrinterOptions.defaults with RowWidth = 32 }) myArray
默认情况下,十六进制为 16,十进制为 10,八进制为 8,二进制为 4(因为它很大……)。
可以构建什么
此存储库包含 ArrayPrinter.Console。这是一个简单的控制台应用程序,从 stdin 读取并输入到 ArrayPrinter
中。将二进制绑定到(例如)ap
,可以这样做
~/A/s/ArrayPrinter (main)> cat Program.fs | ap
0000 EF BB BF 0D 0A 6F 70 65 6E 20 53 79 73 74 65 6D ..open.System
0010 0D 0A 6F 70 65 6E 20 53 79 73 74 65 6D 2E 49 4F ..open.System.IO
0020 0D 0A 0D 0A 6F 70 65 6E 20 41 72 72 61 79 50 72 ....open.ArrayPr
0030 69 6E 74 65 72 0D 0A 0D 0A 5B 3C 45 6E 74 72 79 inter....[.Entry
0040 50 6F 69 6E 74 3E 5D 0D 0A 6C 65 74 20 6D 61 69 Point.]..let.mai
0050 6E 20 5F 20 3D 0D 0A 20 20 20 20 75 73 65 20 69 n._........use.i
0060 6E 27 20 3D 20 43 6F 6E 73 6F 6C 65 2E 4F 70 65 n'...Console.Ope
0070 6E 53 74 61 6E 64 61 72 64 49 6E 70 75 74 28 29 nStandardInput()
0080 0D 0A 20 20 20 20 75 73 65 20 6D 65 6D 20 3D 20 ......use.mem...
0090 6E 65 77 20 4D 65 6D 6F 72 79 53 74 72 65 61 6D new.MemoryStream
00A0 28 29 0D 0A 20 20 20 20 69 6E 27 2E 43 6F 70 79 ()......in'.Copy
00B0 54 6F 20 6D 65 6D 0D 0A 20 20 20 20 6D 65 6D 2E To.mem......mem.
00C0 54 6F 41 72 72 61 79 20 28 29 0D 0A 20 20 20 20 ToArray.()......
00D0 7C 3E 20 41 72 72 61 79 50 72 69 6E 74 65 72 2E ...ArrayPrinter.
00E0 70 72 69 6E 74 41 72 72 61 79 20 50 72 69 6E 74 printArray.Print
00F0 65 72 4F 70 74 69 6F 6E 73 2E 64 65 66 61 75 6C erOptions.defaul
0100 74 73 0D 0A 20 20 20 20 7C 3E 20 70 72 69 6E 74 ts.........print
0110 66 6E 20 22 25 73 22 0D 0A 20 20 20 20 30 0D 0A fn."%s"......0..
...或者使用 Windows Powershell:Get-Content c:\myfile.dat | dotnet run
产品 | 版本 兼容和额外的目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET Standard | netstandard2.0 兼容。 netstandard2.1 兼容。 |
.NET Framework | net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 已计算。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NETStandard 2.0
- FSharp.Core (>= 8.0.0)
-
.NETStandard 2.1
- FSharp.Core (>= 8.0.0)
NuGet 包
此包不被任何 NuGet 包使用。
GitHub 仓库
此包不被任何流行的 GitHub 仓库使用。
增加对更大数组的支持(int64 长度)。增加可选显示限制。