package pp-binary-ints
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
Pretty Printing Binary Integers
Install
dune-project
Dependency
Authors
Maintainers
Sources
pp-binary-ints-0.1.1.tbz
sha256=199c232eab930f0c69bd5ed9d48236bee2dfb91184d173bfbace060b2adc81a1
sha512=2750927e7bd783f104147c6c877dc1eb2e0fa6a05de481bc42585536a8b71a42a496038dc5bd10dcc715c64c70d0573facfa0cbb49c4693db6ecb21c39fc73d9
doc/README.html
pp-binary-ints
An OCaml library for printing ints as unsigned binary integers.
The pretty printers are fairly customizable. The following options are supported.
- Padding with zeros or spaces so that binary integers satisfy a minimum width.
- Prefixing the integers
0b. - Separating every four bits with
_(underscore). - Choose if zeros should be printed similar to non-zero ints.
You can find documentation for the library here.
Installation
Install this library using opam.
opam install pp-binary-intsExamples
The library provides four main functions.
Int.to_stringconverts ints to strings.Int.to_string_with ~flags ~min_widthconverts ints to strings, customizing the output withflagsandmin_width.Int.pp_intis a simpleFormatmodule style pretty printer.Int.pp_binary_int ~flags ~min_widthis a customizableFormatmodule style pretty printer.
There are also versions available for int32, int64, and nativeint in the modules
Int32,Int64, andNativeint.
A generic functor to generate binary-int printers is provided in the MakePP module.
Basic use
# #require "pp-binary-ints";;
# module Pp_Bin = Pp_binary_ints.Int;;
# Pp_Bin.to_string 0b110111;;
- : string = "110111"
# Pp_Bin.to_string 0o777;;
- : string = "111111111"
# Pp_Bin.to_string 1234;;
- : string = "10011010010"Customizing padding and minimum width
# #require "pp-binary-ints";;
# module Pp_Bin = Pp_binary_ints.Int;;
# (* Zero Padding *);;
# Pp_Bin.to_string_with ~flags:Pp_Bin.Flags.{ default with padding = Zeros } ~min_width:13 0b110111;;
- : string = "0000000110111"
# (* Default is space padding on the right *);;
# Pp_Bin.to_string_with ~flags:Pp_Bin.Flags.default ~min_width:13 0b110111;;
- : string = "110111 "
# (* Space padding on the left is also possible *);;
# Pp_Bin.to_string_with ~flags:Pp_Bin.Flags.{ default with padding = Left} ~min_width:13 0b110111;;
- : string = " 110111"Separators and prefixes
# (* Separate every 4 digits with _ *);;
# Pp_Bin.to_string_with ~flags:Pp_Bin.Flags.{ default with separators = true } ~min_width:1 0b110111;;
- : string = "11_0111"
# (* Prefix non-zero *);;
# Pp_Bin.to_string_with ~flags:Pp_Bin.Flags.{ default with prefix_non_zero = true } ~min_width:1 0b110111;;
- : string = "0b110111"
# (* Prefix non-zero with separators *);;
# Pp_Bin.to_string_with ~flags:Pp_Bin.Flags.{ default with prefix_non_zero = true; separators = true } ~min_width:1 0b110111;;
- : string = "0b11_0111"Zero printing behaviour
We support pretty printing 0 (zero) both how OCaml's Printf woould print it, as well as printing it similar to how we print non zero integers. The default behaviour is to follow Printf's zero printing.
# (* Prefix's are not added to zero by default *);;
# Pp_Bin.to_string_with ~flags:Pp_Bin.Flags.{ default with prefix_non_zero = true } ~min_width:1 0;;
- : string = "0"
# Pp_Bin.to_string_with ~flags:Pp_Bin.Flags.{ default with prefix_non_zero = true; zero_printing = InheritNonZero } ~min_width:1 0;;
- : string = "0b0"
# (* For Zero padding, separators are not used by default *);;
# Pp_Bin.to_string_with ~flags:Pp_Bin.Flags.{ default with padding = Zeros; separators = true } ~min_width:6 0;;
- : string = "000000"
# Pp_Bin.to_string_with ~flags:Pp_Bin.Flags.{ default with padding = Zeros; separators = true; zero_printing = InheritNonZero } ~min_width:6 0;;
- : string = "0_0000"
# (* All the above options can be combined *);;
# Pp_Bin.to_string_with ~flags:Pp_Bin.Flags.{ padding = Zeros; separators = true; prefix_non_zero = true; zero_printing = InheritNonZero } ~min_width:8 0;;
- : string = "0b0_0000"
# (* The library is careful not to write "0b_" when prefixing, 'b' is always follewd by a digit *);;
# Pp_Bin.to_string_with ~flags:Pp_Bin.Flags.{ padding = Zeros; separators = true; prefix_non_zero = true; zero_printing = InheritNonZero } ~min_width:7 0;;
- : string = "0b00000"
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page