crackNum: Crack various integer, floating-point data formats

[ bsd3, program, tools ] [ Propose Tags ]

Crack HP, SP and DP floats and 8, 16, 32, 64 bit words and integers.

For details, please see: http://github.com/LeventErkok/crackNum/


[Skip to Readme]

Modules

[Index]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 (info)
Change log CHANGES.md
Dependencies base (>=4 && <5), data-binary-ieee754 (>=0.4), FloatingHex (>=0.4), ieee754 [details]
License BSD-3-Clause
Copyright Levent Erkok
Author Levent Erkok
Maintainer erkokl@gmail.com
Revised Revision 1 made by Bodigrim at 2023-11-12T22:57:07Z
Category Tools
Source repo head: git clone git://github.com/LeventErkok/crackNum.git
Uploaded by LeventErkok at 2018-03-17T21:58:50Z
Distributions Arch:3.2, Debian:2.3, LTSHaskell:3.4, Stackage:3.12
Reverse Dependencies 2 direct, 22 indirect [details]
Executables crackNum
Downloads 16723 total (137 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2018-03-18 [all 1 reports]

Readme for crackNum-2.0

[back to package description]

CrackNum: Decode/Encode IEE754 Numbers

Hackage version Build Status

Command line options:

crackNum v1.9, (c) Levent Erkok. Released with a BSD3 license.
Usage: crackNum precision bit/hex-pattern
          --hp        16 bit half     precision
          --sp        32 bit single   precision
          --dp        64 bit double   precision
          --sb         8 bit signed   byte
          --sw        16 bit signed   word
          --sd        32 bit signed   double
          --sq        64 bit signed   quad
          --ub         8 bit unsigned byte
          --uw        16 bit unsigned word
          --ud        32 bit unsigned double
          --uq        64 bit unsigned quad
          --toIEEE=n  Convert from decimal to IEEE SP/DP formats.
  -l n    --lanes=n   number of lanes
  -h, -?  --help      print help, with examples
  -v      --version   print version info

Examples:

   crackNum --hp fc00
   crackNum --sp fc00 abcd
   crackNum --dp fc00 abc1 2345 6789
   crackNum --sp 01111111110000000000000000000000
   crackNum -l2 --hp 01111111110000000000000000000000
   crackNum --sb 7f
   crackNum --sp --toIEEE=-2.3e6
   crackNum --dp --toIEEE=max
   crackNum --dp --toIEEE=ulp

Notes:
  - You can use hexadecimal or binary as input.
  - You can use _,- or space as a digit to improve readability.
  - You can give input for multiple lanes, we will guess the #of lanes for you.
    Or, you can specify number of lanes with the -l option.
  - For "toIEEE" option (case doesn't matter):
        - You can enter a number in decimal notation (like 2.3)
        - You can enter a number in hexadecimal notation (like 0x1.abcp+3)
        - OR, enter one of the following:
               * infinity, -infinity: Positive/Negative infinities
               * nan, snan, qnan: Not-A-Number; signaling/quiet
               * 0, -0: Both kinds of zeros
               * max : The maximum finite positive value
               * -max: The minimum finite negative value
               * min : The minimum normal positive value
               * -min: The maximum normal negative value
               * epsilon: The smallest possible value x s.t. 1+x /= 1.
               * ulp: The minimum subnormal value

Example: Decoding single-precision numbers on two lanes

$ crackNum --sp fc00 abc1 7F80 0001
== Lane: 1 ==========================================
                  3  2          1         0
                  1 09876543 21098765432109876543210
                  S ---E8--- ----------F23----------
          Binary: 1 11111000 00000001010101111000001
             Hex: FC00 ABC1
       Precision: SP
            Sign: Negative
        Exponent: 121 (Stored: 248, Bias: 127)
       Hex-float: -0x1.015782p121
           Value: -2.6723903e36 (NORMAL)
== Lane: 0 ==========================================
                  3  2          1         0
                  1 09876543 21098765432109876543210
                  S ---E8--- ----------F23----------
          Binary: 0 11111111 00000000000000000000001
             Hex: 7F80 0001
       Precision: SP
            Sign: Positive
        Exponent: 128 (Stored: 255, Bias: 127)
       Hex-float: NaN (Signaling)
           Value: NaN (Signaling)
            Note: Representation for NaN's is not unique.

Example: Encoding a float as a IEEE754 single-precision bit-pattern

$ crackNum --sp --toIEEE=-2.3e6
              3  2          1         0
              1 09876543 21098765432109876543210
              S ---E8--- ----------F23----------
      Binary: 1 10010100 00011000110000110000000
         Hex: CA0C 6180
   Precision: SP
        Sign: Negative
    Exponent: 21 (Stored: 148, Bias: 127)
   Hex-float: -0x1.18c3p21
       Value: -2300000.0 (NORMAL)