2016-06-21 8 views
0

10進数のみを含むStringをバイナリ配列に変換するメソッドを記述しようとしています。任意の長さのバイナリ配列への

基本的な問題は、Integer.parseIntメソッドを使用して文字列を整数として扱うことができないことです。例えば、...

intデータ型では4バイトしか使用できないため、これは機能しません。

私のメソッドは、任意の長さのメッセージに対して機能する必要があります。

私はいくつかの構文解析が順調だと思いますが、これにどう対処するかはわかりません。

+4

そこには「BigInteger」クラスがあります... – Makoto

+0

私はそれについて考えましたが、問題は同じです。メッセージの長さが40文字の場合、BigIntegerでさえも大きすぎます。私はこれを解決するきちんとしたデータ型がないと思います。だから、私は真っ直ぐ前方の解析テクニックをもっと探しています。 –

答えて

4

BigIntegerクラスがこれを行うことができます。任意のサイズの整数をサポートし、必要なすべての変換を行うメソッドを持っています。 the constructor which takes a Stringを使用し、toByteArray()を使用して変換してください。

byte[] result = (new BigInteger(numberString)).toByteArray(); 
+0

私はそれがどんなサイズでもサポートされていることを知りませんでした。私は間違っていたと思う、私はそれをチェックしてください!ありがとう! –

+0

@JacobLevinsonうん、それはあなたがそれに何の問題もなくスローする任意のサイズを扱うことができます。さらに、必要に応じてデータを操作するための適切な選択方法が用意されています。 – resueman

+0

それは働いた。再度、感謝します。私が自由な時間にやっている興味深いプロジェクトです。大学院の私の時代には、どのようなサイズの鍵も扱うことができる暗号化アルゴリズムを開発しました。私の計画は、これを簡単なアプリとして実装することです。何年もJavaを使用していないし、私は決してアプリケーションをコーディングしていないので、これは興味深い課題です。 –

-1

一度に1つのチャンクに近づけて、結果を連結してみてください。 See here how to split the String

+1

整数を連結する方法がわかりません。文字列の長さが10^308を超えたと仮定して、一緒に糊付けしなければならない整数のサイズをどのように保存しますか? – Makoto

+0

Hesがバイナリ配列を作成しようとすると、次のチャンクを次のインデックス位置に追加するだけです。連結は貧しい言葉かもしれないが、私はそれが近いと思う。 –

関連する問題