8進数文字列をそのまま10進数文字列として変換する方法を教えていただきたいです。
(例)
8進数文字列"70" → 10進数文字列"70"
追記
8進数文字列"70" → 10進数文字列"56"に変換するわけではありません。
昨日私が作成している電卓アプリの四則演算の不具合という質問で答えとして計算結果が8進数になっているという回答をいただき、8進数から10進数へ変換しようと思い模索したのですが良策が見つからないため質問いたしました。
ご質問には、例として
8進数文字列"70" → 10進数文字列"70"
とありますが、8進数表記による 70 を、10進数で表すと 56 になります。 文字列"70" を 文字列"56" にするにはどうしたらいいか?というご質問ということでよいでしょうか?
いえ、8進数の文字列と同じ文字列をそのまま10進数の文字列として表示するという意味です。70(8進数)→56(10進数)ではなく70(8進数)→70(10進数)ということです。
説明が疎かになってしまい申し訳ないです。
ご返答ありがとうございます。ご質問の趣旨として、「 "70" を"56"にしたいわけではない。」ということは理解できました。
ええと、文字列 "70" を何進数として解釈するかはパースする人の自由なんですが、あなたにはそれがなぜ8進数だと「わかっていて」、(同じ数字のまま)10進数に「変換したい」のかを、質問文の中で説明されるとよいかと思います(ご存じかもしれませんが、質問文は後から編集可能です)。
なお、一般に「8進数文字列を10進数文字列に変換したい」と尋ねられたら、「(たとえば)"70"を"56"にしたいのだな」と解釈することが自然です。
> 昨日私が作成している電卓アプリの四則演算の不具合という質問で答えとして計算結果が8進数になっているという回答をいただき、8進数から10進数へ変換しようと思い模索したのですが良策が見つからないため質問いたしました。
おおう。それは、「文字列の先頭に0を付けていること」が原因なので、先頭に"0"が付かないように修正すればいいのでは。
ご指摘ありがとうございます。
文字列の先頭に0がついていると勝手に8進数に変換されてしまうということでしょうか?
正確には、「あなたの電卓アプリでは、計算を`eval`でJavaScriptに丸投げしているので、JavaScriptがevalの引数を処理する際に、文字列がJavaScriptコードとして評価される。JavaScriptでは、`010`など0で始まる数値は8進数と解釈する」です。
無事解決いたしました。色々とご指摘いただきありがとうございました。
evalを使用していたため文字列で解釈されていたのですね。とても参考になりました。ありがとうございます。
回答4件
あなたの回答
tips
プレビュー