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函式將二進位制數轉換為八進位制數。此外,我們還可以使用輔助函式與使用者定義的函式進行轉換。

更新於: 2023年3月13日

253 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告