2012-03-05 28 views
-1

私はSRECファイルの内容を含む文字列を持っています。 SRECファイルでは、2文字は1バイト(この場合は命令)です。文字列[]〜バイト[] 2文字をバイトに変換しますか?

もし私が文字列を文字列配列にし、その文字列配列の要素をバイトに変換すれば(少なくとも私がやっていると思う)、各文字をバイトに分解する...どうすればこれを回避できますか?

例1:

String[] myFile = new String[]{"s1", "my", "na", "me","is"}; 
try 
{ 
    byte[] byteArray = myFile[1].getBytes("UTF-16LE"); 
    System.out.println(java.util.Arrays.toString(byteArray)); 
} 

結果: [109、0、121、0]

+0

どのように2文字を1バイトにすることができますか?すべての文字が2バイトであることを意味しますか? – Taymon

+0

あなたの質問は明確ではありません。 「2文字ごとに1バイト」とはどういう意味ですか?あなたの出力は、文字列 "my"( 'myFile [1]')のUTF-16表現であり、Javaの 'char'は単一の16ビットUnicode文字です。 '\ u0000'(または0)と '\ uffff'(または65535を含む)の最大値を指定します。 .html))。 –

+0

'UTF-16LE'は各文字を2バイトに変換します。 –

答えて

1

あなたは、エンコーディングとしてUTF-16LEを指定しています。これは、すべてのJavaのために常に2バイトを使用しますchar。文字あたり2バイトを使用しない場合は、UTF-16を使用しないでください。

SRECファイルで2文字が1バイトで表される場合は、ある種のマッピングStringからByteまで - 2つの可能な文字列がありますが、256の可能なバイトのみがあります。です。これが固定のマッピングであると仮定すると、Map<String, Byte>をハードコードし、マップから値をフェッチするだけでよいでしょう。

(値は実際には六角た場合は、既存の六角解析コードを使用することができます - 。しかし、あなたが与えてくれたサンプル文字列のどれもが進数字の有効なペアではありません)

+0

どうしたらいいですか? – BigBug

+0

@BlueMonster:文字列がSRECファイルのバイトにどのようにマッピングされるのかはわかりません。あなたはSRECが何であるか教えてくれませんでした。リンクできる仕様はありますか? –

+0

SRECは本当に重要ではありません。重要な部分は、ファイルから文字列に何かを読み込んでいます...そしてその文字列から、各2文字が命令であり、それぞれ2文字が1バイトである必要があります... – BigBug

1

SRECは、エンコードされた16進数にバイトを変換し、数字。

http://en.wikipedia.org/wiki/SREC_%28file_format%29

これは、あなたがやろうとしているように見えるものの反対です。

私は何を使用しますか?

文字列の各バイトが等価の16進数に変換されるループを記述します。無限の例があります。

+0

私のプログラムでいくつかのことを操作し、もうsrecファイルを使用しない別のメソッドに戻す必要があります...私はちょうどバイトに変換するために読み込まれた各2文字が必要です... – BigBug

+0

これを行う標準的な方法がないので、あなたがしたいマッピングの例を質問に追加してください。 (全く違う何かをするSRECを参照するのではなく) –

+0

私はあなたの実際の要求がSREC仕様に従い、各文字を2バイト(16進数)にすることだと思っています。 –

関連する問題