- 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.
推薦閱讀
- 深入理解Bootstrap
- Python Geospatial Development(Second Edition)
- Visual Basic程序設(shè)計習(xí)題解答與上機指導(dǎo)
- 微信小程序入門指南
- 全棧自動化測試實戰(zhàn):基于TestNG、HttpClient、Selenium和Appium
- HTML5從入門到精通(第4版)
- Mastering Git
- The Professional ScrumMaster’s Handbook
- Emgu CV Essentials
- Zabbix Performance Tuning
- 單片機原理及應(yīng)用技術(shù)
- 零基礎(chǔ)輕松學(xué)C++:青少年趣味編程(全彩版)
- 玩轉(zhuǎn).NET Micro Framework移植:基于STM32F10x處理器
- Building Business Websites with Squarespace 7(Second Edition)
- JavaEE架構(gòu)與程序設(shè)計