-1

ビッグエンディアン順で64ビット(バイトではなく)で文字列のサイズを取得する方法)? 私はJavaでこの種の操作をしたことがありません。助けてくれてありがとう:)。

4

3 に答える 3

4

私はあなたがこれを望んでいると思います:

String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16BE");
int sizeInBits = byteArray.length * 8;

ソース:なぜ byteArray の長さは 20 ではなく 22 なのですか?

于 2012-07-06T18:23:58.587 に答える
1

え?文字列は、文字またはバイトでのみ測定でき、エンコーディングに特定の文字セットを指定した場合にのみ測定できます。

後者の場合は、string.getBytes(charset).length.

あなたが実際に何をしようとしているのかを知っていれば、助けになるかもしれません。

于 2012-07-06T18:22:55.477 に答える
0

x86 のようなプラットフォームが LittleEndian を使用していても、Java は常に BigEndian オーダーを使用して内部的に動作します。

Java 64 ビット値では、longデータ型に格納されます。

最後の質問は、何を測定したいかです。String では、文字数、または指定されたエンコーディング (UTF-8、UTF-16、ISO-8859-1 など) を使用してエンコードするときに String が必要とするバイト数をカウントできます。

String 内の文字数をカウントし、その数を 64 ビット数として取得したい場合、次のコードを使用できます。

String myString = "abcdefgh";
long charCount = myString.length;

ファイルまたはネットワーク接続に書き込みたい場合はcharCount、DataOutputStream を使用して BigEndian 表現を取得できます。

DataOutputStream out = new DataOutputStream(streamToWriteTo);
out.writeLong(charCount);
于 2012-07-06T18:30:43.270 に答える