私は常にstreams、printf、string(x)、または数値型を文字列に変換したり、逆に変換したりするために提供されている問題の言語を使用してきました。しかし、私はこれが実際にどのように行われるかを実際に考えたことはありません。私はグーグルで検索しましたが、すべての結果はそれらのさまざまな方法を使用するだけであり、変換が実際に舞台裏でどのように行われるかではありません:(
2進数、8進数、16進数を使用する整数の場合、文字列の各「数字」はビットのセットグループを表すため(たとえば、xxxxyyyyを知っている2つの16進数)、ビットシフトと1つを取ることでそれを行うことができます。一度に1桁ずつ、たとえば16進文字列0xFA20の場合、値は「(15 << 12)|(10 << 8)|(2 << 4)|(0 << 0)」です。
10進数の整数は、基数10がそのように基数2にマップされないため、より困難です。したがって、1ビットが複数の10進数に影響を与え、双方向の変換がより複雑になる可能性があります。
浮動小数点数については、私にはよくわかりません。全体と小数部分を別々に考えることができると思いますか?指数関数、有効数字の設定数、または小数点以下の桁数の設定はどうですか?