Haskellで16進数から12進数に変換しようとすると、間違った結果が得られるのはなぜですか?

アントン・サヴェリエフ

解決しました

関数が正しく機能していません。hex2dec "100"または "10000"を実行すると、正しい256ではなく16になります。hex2dec "101"を実行すると、正しい257ではなく17になります。

hex2dec :: String -> Integer
hex2dec str = go (reverse str)
      where go []     = 0
            go (x:xs) = hexChar x + 16 * hex2dec xs

hexChar :: Char -> Integer
hexChar c
      | c == '0' = 0
      | c == '1' = 1
      | c == '2' = 2
      | c == '3' = 3
      | c == '4' = 4
      | c == '5' = 5
      | c == '6' = 6
      | c == '7' = 7
      | c == '8' = 8
      | c == '9' = 9
      | c == 'a' = 10
      | c == 'b' = 11
      | c == 'c' = 12
      | c == 'd' = 13
      | c == 'e' = 14
      | c == 'f' = 15
      | otherwise     = 0
アントン・サヴェリエフ

「hex2dec」を「go」に変更する必要がありました。

hex2dec :: String -> Integer
hex2dec str = go (reverse str)
      where go []     = 0
            go (x:xs) = hexChar x + 16 * go xs

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

負の16進数と負の10進数の間で変換すると、間違った結果が得られます

分類Dev

cudaに2つの数値を追加すると間違った結果が得られるのはなぜですか?

分類Dev

2つの同じ10進数を比較すると、間違った結果が得られます

分類Dev

12時間から24時間の変換では、間違った結果が得られます

分類Dev

無限ループを使用して符号なし整数を追加すると、間違った結果が得られるのはなぜですか?

分類Dev

Javaでバイト配列をBitSetに変換することで間違ったビット表現が得られるのはなぜですか

分類Dev

変数を使用した計算では、セル参照を使用した計算とは異なる結果が得られるのはなぜですか?

分類Dev

(Leetcode#231)Power of Twoの実装で間違った結果が得られるのはなぜですか?

分類Dev

10進数から2進数へ-小数点以下の桁の左側と右側を、両側が整数であるかのように2進数に変換できないのはなぜですか?

分類Dev

列を16進数に変換してから連結して、固定長の新しい列を作成するにはどうすればよいですか?

分類Dev

間違った出力を示すCでの16進数から2進数への変換

分類Dev

TODAY()関数から値を減算しようとすると、間違った結果が生成されます

分類Dev

加算を実行するときに「数値定数が10進数、16進数、または8進数である」というバッチ障害が発生するのはなぜですか/どうすれば解決できますか?

分類Dev

C ++から16進数への変換でフォーマットが異なるのはなぜですか?

分類Dev

なぜ間違った出力が得られるのですか?

分類Dev

日時に変換するときに、パンダを使用して結果が間違った年と月を解析するのはなぜですか?

分類Dev

各桁の4乗の合計を計算すると、なぜ間違った結果が得られるのですか?

分類Dev

変数から読み取ると、空白の新しい変数が得られるのはなぜですか?

分類Dev

C#でushortポート番号をhtonsからntohsに変換すると、異なる結果が得られるのはなぜですか?

分類Dev

SEまたはNSEdplyr関数を使用して異なる結果が得られるのはなぜですか

分類Dev

'\ x80'の16進数を10進数に変換するにはどうすればよいですか

分類Dev

PSスクリプトを変数に格納すると、異なる結果が得られるのはなぜですか?

分類Dev

文字列から 16 進数で同じ結果が得られる理由

分類Dev

10進数を16進数に変換することになっているこのPythonプログラムで再帰関数を呼び出すにはどうすればよいですか?

分類Dev

このJavaアプリケーションで年、月、日から始まる新しい日付を作成すると、間違った結果が得られるのはなぜですか?

分類Dev

pd.concat()とpd.merge()の違いと、なぜ間違った出力が得られるのですか?

分類Dev

単純な整数の乗算でdoubleが期待どおりに機能するのに、int64_tを使用すると間違った結果が得られるのはなぜですか

分類Dev

ナノ秒をミリ秒に変換するときに10進数の結果を取得するにはどうすればよいですか?

分類Dev

XSLTでXMLを変換すると、間違った結果が得られます

Related 関連記事

  1. 1

    負の16進数と負の10進数の間で変換すると、間違った結果が得られます

  2. 2

    cudaに2つの数値を追加すると間違った結果が得られるのはなぜですか?

  3. 3

    2つの同じ10進数を比較すると、間違った結果が得られます

  4. 4

    12時間から24時間の変換では、間違った結果が得られます

  5. 5

    無限ループを使用して符号なし整数を追加すると、間違った結果が得られるのはなぜですか?

  6. 6

    Javaでバイト配列をBitSetに変換することで間違ったビット表現が得られるのはなぜですか

  7. 7

    変数を使用した計算では、セル参照を使用した計算とは異なる結果が得られるのはなぜですか?

  8. 8

    (Leetcode#231)Power of Twoの実装で間違った結果が得られるのはなぜですか?

  9. 9

    10進数から2進数へ-小数点以下の桁の左側と右側を、両側が整数であるかのように2進数に変換できないのはなぜですか?

  10. 10

    列を16進数に変換してから連結して、固定長の新しい列を作成するにはどうすればよいですか?

  11. 11

    間違った出力を示すCでの16進数から2進数への変換

  12. 12

    TODAY()関数から値を減算しようとすると、間違った結果が生成されます

  13. 13

    加算を実行するときに「数値定数が10進数、16進数、または8進数である」というバッチ障害が発生するのはなぜですか/どうすれば解決できますか?

  14. 14

    C ++から16進数への変換でフォーマットが異なるのはなぜですか?

  15. 15

    なぜ間違った出力が得られるのですか?

  16. 16

    日時に変換するときに、パンダを使用して結果が間違った年と月を解析するのはなぜですか?

  17. 17

    各桁の4乗の合計を計算すると、なぜ間違った結果が得られるのですか?

  18. 18

    変数から読み取ると、空白の新しい変数が得られるのはなぜですか?

  19. 19

    C#でushortポート番号をhtonsからntohsに変換すると、異なる結果が得られるのはなぜですか?

  20. 20

    SEまたはNSEdplyr関数を使用して異なる結果が得られるのはなぜですか

  21. 21

    '\ x80'の16進数を10進数に変換するにはどうすればよいですか

  22. 22

    PSスクリプトを変数に格納すると、異なる結果が得られるのはなぜですか?

  23. 23

    文字列から 16 進数で同じ結果が得られる理由

  24. 24

    10進数を16進数に変換することになっているこのPythonプログラムで再帰関数を呼び出すにはどうすればよいですか?

  25. 25

    このJavaアプリケーションで年、月、日から始まる新しい日付を作成すると、間違った結果が得られるのはなぜですか?

  26. 26

    pd.concat()とpd.merge()の違いと、なぜ間違った出力が得られるのですか?

  27. 27

    単純な整数の乗算でdoubleが期待どおりに機能するのに、int64_tを使用すると間違った結果が得られるのはなぜですか

  28. 28

    ナノ秒をミリ秒に変換するときに10進数の結果を取得するにはどうすればよいですか?

  29. 29

    XSLTでXMLを変換すると、間違った結果が得られます

ホットタグ

アーカイブ