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                
#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 Status

一个用于以可读方式格式化字节数组的 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 已计算。
兼容的目标框架
包含的目标框架(包含在包内)
了解更多关于 目标框架.NET Standard 的信息。

NuGet 包

此包不被任何 NuGet 包使用。

GitHub 仓库

此包不被任何流行的 GitHub 仓库使用。

版本 下载 最后更新
0.2.0 110 3/15/2024
0.1.1 101 3/14/2024
0.1.0 222 11/29/2023

增加对更大数组的支持(int64 长度)。增加可选显示限制。