Haskell程式:將二進位制轉換為八進位制
在Haskell中,我們可以使用使用者定義函式Folder、reverse和輔助函式將二進位制數轉換為八進位制數。在第一個示例中,我們將使用(binaryToOctal binary = showOct decimalValue "" where decimalValue = foldl (\acc x -> acc * 2 + digitToInt x) 0 binary)函式。在第二個示例中,我們將使用(binaryToOctal binary = showOct decimalValue "" where decimalValue = foldl (\acc x -> acc * 2 + digitToInt x) 0 binary octalDigits = reverse (octalHelper decimalValue) octalHelper n | n < 8 = [n] | otherwise = (n `mod` 8) : octalHelper (n `div` 8))。
演算法
步驟1 - 匯入Data.Char和Numeric庫。
步驟2 - 定義binaryToOctal函式。
步驟3 - 程式執行將從main函式開始。main()函式控制整個程式。它被寫成main = do。
步驟4 - 初始化名為“binaryNumber”的變數。它將儲存要轉換為相應八進位制數的二進位制數。
步驟5 - 函式呼叫完成後,使用'putStrLn'語句將結果八進位制數列印到控制檯。
示例1
在此示例中,使用使用者定義的binaryToOctal函式以及foldl函式來將二進位制數轉換為八進位制數。
import Data.Char (digitToInt) import Numeric (showOct) binaryToOctal :: String -> String binaryToOctal binary = showOct decimalValue "" where decimalValue = foldl (\acc x -> acc * 2 + digitToInt x) 0 binary main :: IO () main = do let binaryNumber = "110101010" putStrLn ("Binary number: " ++ binaryNumber) putStrLn ("Octal number: " ++ binaryToOctal binaryNumber)
輸出
Binary number: 110101010 Octal number: 652
示例2
在此示例中,使用使用者定義的binaryToOctal函式以及foldl和reverse函式以及輔助函式來將二進位制數轉換為八進位制數。
import Data.Char (digitToInt) import Numeric (showOct) binaryToOctal :: String -> String binaryToOctal binary = showOct decimalValue "" where decimalValue = foldl (\acc x -> acc * 2 + digitToInt x) 0 binary octalDigits = reverse (octalHelper decimalValue) octalHelper n | n < 8 = [n] | otherwise = (n `mod` 8) : octalHelper (n `div` 8) main :: IO () main = do let binaryNumber = "110101010" putStrLn ("Binary number: " ++ binaryNumber) putStrLn ("Octal number: " ++ binaryToOctal binaryNumber)
輸出
Binary number: 110101010 Octal number: 652
結論
二進位制到八進位制的轉換是將二進位制數(以2為底)轉換為其八進位制等價物(以8為底)的過程。要進行此轉換,我們需要將二進位制數字分組為三組,從最右邊的數字開始,然後將每組轉換為其等價的八進位制數字。在Haskell中,使用使用者定義的函式以及foldl和reverse函式將二進位制數轉換為八進位制數。此外,我們還可以使用輔助函式與使用者定義的函式進行轉換。