- Haskell Data Analysis Cookbook
- Nishant Shukla
- 272字
- 2021-12-08 12:43:38
Displaying a number in another base
Strings are a natural way to represent numbers in different bases due to the inclusion of letters as digits. This recipe will tell us how to convert a number to a string that can be printed as output.
How to do it...
- We will need to import the following two functions:
import Data.Char (intToDigit, chr, ord) import Numeric (showIntAtBase)
- Define a function to represent a number in a particular base as follows:
n 'inBase' b = showIntAtBase b numToLetter n ""
- Define the mapping between numbers and letters for digits larger than nine as follows:
numToLetter :: Int -> Char numToLetter n | n < 10 = intToDigit n | otherwise = chr (ord 'a' n – 10)
- Print out the result using the following code snippet:
main :: IO () main = do putStrLn $ 8 'inBase' 12 putStrLn $ 10 'inBase' 12 putStrLn $ 12 'inBase' 12 putStrLn $ 47 'inBase' 12
- The following is the printed output when running the code:
$ runhaskell Main.hs 8 a 10 3b
How it works...
The showIntAtBase
function takes in a base, the desired number, and its mapping from number to printable digit. We order our digits in the following manner: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, and so on, up to 36 characters. Putting it all together, we get a convenient way to represent a decimal number in any base.
See also
To read a string representing a number from another base as a decimal integer, refer to the Reading a number from another base recipe.
推薦閱讀
- 自己動手寫搜索引擎
- Android Jetpack開發:原理解析與應用實戰
- Building Modern Web Applications Using Angular
- Python神經網絡項目實戰
- Building Cross-Platform Desktop Applications with Electron
- Java程序設計與實踐教程(第2版)
- Oracle Database 12c Security Cookbook
- VMware虛擬化技術
- INSTANT Passbook App Development for iOS How-to
- Nginx實戰:基于Lua語言的配置、開發與架構詳解
- Python之光:Python編程入門與實戰
- PySide 6/PyQt 6快速開發與實戰
- The Professional ScrumMaster’s Handbook
- Java Fundamentals
- Hands-On Neural Network Programming with C#