• 締切済み

8桁整数を限りなく短い文字列にしたい!!

Oh-Orangeの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★質問は『限りなく短い文字列にしたい!!』ですよね。 ・文字列は『文字』の並びですので 36 進数が最大ならば、BASE64 は使えませんね。  申し訳ありません。質問文に『大文字小文字区別なし』と書かれてありましたね。 ・文字列で表す以上 0~9、A~Z の文字しか利用できないならば 6 桁で限界ですよ。  バイナリの 2 進数で処理すれば 4 バイト(4桁)ですみますが、0~35 の数値を  1桁の文字で表すのだから 6 桁以下には出来ません。ただし、先頭のゼロを省けば  短くはなりますけど…。 ・単純に36進数で変換して、先頭のゼロを省くようにすれば短く出来ます。それ以外は  理論上無理!と思います。なお、ハフマン符号化すれば短くすることも出来ますが、  8桁の数値を満遍なく表すとデータを圧縮できません。先頭のゼロを省いて表記する  方が分かりやすいと思います。 ・以上。おわり。

tool0514
質問者

お礼

すみません、質問がわかりづらかったですね。 なんか例でも入れておけばよかったです。 >単純に36進数で変換して、先頭のゼロを省くようにすれば短く出来ます。 整数値ということもあり、こちらに関してはやってみています。 >それ以外は理論上無理!と思います。なお、ハフマン符号化すれば短 >くすることも出来ますが、8桁の数値を満遍なく表すとデータを圧縮で>きません。 すみません、この辺私の符号化等の理解が乏しくてよくわかっていません。8桁の数値を満遍なく表すとデータを圧縮できない理由をご説明願えませんでしょうか。 よろしくお願いします。

関連するQ&A

  • 2桁の正の整数について

    問題は 2桁の正の整数で、二乗した数の下2桁がもとの数と同じになるようなものをすべてあげるのですが、 これは2桁だから10から99の数なんですよね? でも,10から99の数を二乗して求めるのはとても時間がかかってしまいます。 簡単な求める方法はありますか? おねがいします

  • 3桁の整数の表し方と証明

    各位の数字が全て異なり各位とも0でない3桁の整数がある。この整数の各位の数字を入れ替えて出来る全ての整数ともとの整数を加えると222の倍数になることを証明せよ。という問題ですが、、 もとの3桁整数を表すのに100a+10b+cと考えました。 各位を入れ換えた整数を例えば100b+10c+aとすると加えると101a+110b+11cとなります。これが222の倍数となると証明できないし、、。最初の3桁の整数の表し方が違うんですかね、、。すいません、教えて下さい。

  • 16進n桁の文字列変換の方法は?

    手持ちの本『JavaScriptポケットリファレンス』によると『toString(16)』で 整数値を16進数の文字列へ変換できるようです。 そこで質問します。 整数値『123』を16進数の4桁『007B』に変換する方法を教えて下さい。 『Number(123).toString(16).toUpperCase()』とすると『7B』ですので、 先頭に『00』を追加したいのです。どうすれば良いでしょうか? あと、10進n桁の方法も同じように出来ると思いますが、その方法も一緒に教えて下さい。 以上。お願いします。→JavaScript 歴1.5ヵ月です。

  • nは3桁の正の整数で√n/12が整数になる数は何個

    nは3桁の正の整数で√n/12が整数になる数は何個ですか? この問題の解き方教えてください。

  • 文字列から整数導き出したい

    お世話になります。 現在、簡易的な占いのプログラムを作ってみています。 フォームに入力された文字から占いの結果を表示するようなものを 作りたいのですが、中々うまくいきません。 仕組み的にはフォームから文字列をPOST⇒10進数の整数に変換⇒10進数の整数に対応する占い結果を表示という形を考えています。 文字列をbin2hex関数で16進数にはできるのですが、16進数から10進数変換する方法がわかりません。 何かより方法がありましたらご教授ください。

    • ベストアンサー
    • PHP
  • 整数問題/2ケタの整数を2個ずつ作る

    以下の問題です。 -------------------------------------- 1~9の数字が書かれた9枚のカードがあります。 今,A君がまず2枚のカードを取り,十の位の数が一の位の数より大きくなるように並べて2ケタの数を作り,さらに2枚のカードを取り,十の位の数が一の位の数より大きくなるように並べて2ケタの数を作ります。こうして,A君は2ケタの数を2つ作ります。 次に,B君が残りの5枚のカードからA君と同様に2ケタの数を2つ作ります。 A君が作った2つの2ケタの数の和とB君が作った2つの2ケタの数の和が同じになったとき,和は全部で何通り考えられますか。 --------------------------------------------- [1]のカードを使わない場合は,繰り上がりがないので数えやすいのですが(6通り), その他の場合は,繰り上がりがないことの証明はどうしたらいいのでしょうか。 お力をお貸しください。

  • 5ケタの正の整数

    こんばんは。 SPIの問題を解いておりましたら、分からない問題が出てきまして。。。。。。。。 5ケタの正の整数72□□2があります。 この□□に適当な数字を入れて3の倍数となるようにした時、最大のものと最小のものの差はいくらですか。 このような問題です。 解答欄を見てみますと。。。。。。。。 3の倍数の見分け方は、各位の数字の和が3の倍数であるかないか。 5ケタの正の整数72□□2では、 7+2+□+□+2が3の倍数であるようにする。 従って、 最大は72972。 最小は72012。 その差は960である。 。。。。。。。。。。。。。このようになっていたのですが。。。。。 3の倍数の見分け方は各位の数字の【和】が3の倍数であるかないか、という定義(概念?考え方?)が今いちピンとこないです。。。。。。。。。。 7+2+□+□+2が3の倍数になるかならないかが問題を解く鍵になる。。。。。。。。。 根本の部分がダメなんでしょうね。。。。。。。。 試験まで丸暗記するしかないかな。。。。。。。と今は思ってます(苦笑) お時間のある時に回答して頂けると幸いです。

  • ある文字列の最後の2桁で分解し配列にする方法・・・

    こんにちは。 ある12桁~24桁の数字に+1をした数字を表示しようとしています。 int型とfloat型が16桁以上の数字が扱えないようなので、おかしくなってしまいます・・・ 1111111111111111の数字に+1をすると 1.1111111111111E+15となります・・・。 これをどうにかできるようにしたいので、 この数字の最後の2桁で文字を分解し その2桁に+1をして、 再び 最後の2桁とそれ以前の文字列とを足して 元の桁数にしようと考えました。 しかし、この最後の2桁で文字を分解し、各変数か配列に収める方法がわかりません・・・ 何かよい方法もしくは関数などありませんか? どうか、よろしくお願いします。

    • ベストアンサー
    • PHP
  • 整数を文字列として認識したい

    整数を文字列として認識したいんですが、可能なのでしょうか? 例えば、i=12470というint型の整数があるとして、1万の位の数1や、十の位の数7だけを取り出したいんです。 しかし、この際、1万の位の数1をi/10000、十の位の数7を(i%100)/10などというようにしては取り出したくないんです。 ややこしい質問ですが、よろしくお願いします。 というのも、整数を文字列として認識する目的は、int型として送られてきたデータが本当に整数なのかをチェックするためだからです。 初心者なので合っているか分かりませんが、整数を文字列として認識できれば、isdigit関数を使うことで、データが本当に整数なのかをチェックすることができるのかなあと考えているんですが・・・ もし、私の考えが間違っていたり、他に良い方法があったら是非教えて欲しいと思います。

  • エクセル 関数 文字列を分ける

    23Ar23 28Ar05 3Ta16 8Ta07 11Ta53 14Ta21 …以下多数 のように文字列があって、アルファベット前の数字(1文字か2文字)、アルファベット(2文字)、アルファベット後の数字(2文字)の3つに分割したいのです。データ区切り位置の機能を使えれば簡単ですが、アルファベットの前の文字数が1字と2字のものがあるのでできません。RIGHT、LEFTの関数を使用すれば、アルファベット2文字とアルファベット後の数字2文字は抽出できますが、アルファベット前の数字(1文字か2文字)だけ取り出せません。 関数か何かの方法で文字数を分ける方法を教えてください。