25バイト以上ある文字配列を25バイトまでに切り取りたいのです。
全て半角英数ならstr.substring(0 ,25)ですみますが
日本語も入っているのでsubstringが使えません。
そこで,バイト配列を使おうと思ったのですがうまくいきません。どうかお願いします。
例)
String E = "AAAAAAAAAAAAAあああああああ";
byte S[] = new byte[100];
S=E.getBytes();
ByteArrayOutputStream out = new ByteArrayOutputStream();
for(int n = 0; n < 25 ; ++n){
out.write(S[n]);
}
System.out.println(out.toByteArray());
結果として"AAAAAAAAAAAAAあああ"が出力されてほしい
No.1ベストアンサー
- 回答日時:
> System.out.println(out.toByteArray());
出力したいのはバイト配列そのものではなくて、バイト配列を文字列に変換したものでは?
→ System.out.println(new String(out.toByteArray()));
ところで、
"AAAAAAAAAAAAAあああああああ"
から 25 バイト切り取って
"AAAAAAAAAAAAAあああ"
になるのがよく分からないのですが……。
エンコーディングは何ですか?
文字列⇔バイト配列の変換ではエンコーディングを指定したほうが失敗がないと思います。
// 25 バイト目が文字と文字の間ではない場合はどうしますか?
No.3
- 回答日時:
No1さんにもありますが、エンコード(もしくは対象OS)が分からないと何とも言えません。
例えば、Windowsのみをターゲットするのなら、MS932前提のコーディングとなりますが、同じソースをLinuxで動かしたら…。
さて、とりあえずWindows前提で回答しますと、No2さんの通り、最後をSystem.out.println(new String(out.toByteArray()));にすれば、結果として「AAAAAAAAAAAAAああああああ」が表示されます。
半角13文字、全角6文字(12バイト)で合計25バイトの文字列です。
しかし、もし運悪く半角Aが14文字あったらどうなるでしょうか?結果は「AAAAAAAAAAAAAAあああああ?」となります。この時にどういう仕様にしましょうか。
あと細かい部分ですが、byte S[] = new byte[100];でnewする必要はありません。次のS=E.getBytes();で参照が切れるので、すぐにgcの対象になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Perl perlについての質問 2 2022/10/17 15:25
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CD R の書き込み
-
“半角カタカナ”は、ずいぶん昔...
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
ビットスワップとバイトスワッ...
-
COBOLのCOMP形式について
-
ポインター引数の関数でコンパ...
-
GETメソッドとPOSTメソ...
-
CGIを勉強しています。¥n(改...
-
Excel VBA グラフ作成のとき...
-
このプログラムはどういった事...
-
htmlソース編集で、各タグを何...
-
異なるドメインのサイトでcooki...
-
stable diffusionのエラー
-
構造体のソートの方法について...
-
DataGridViewの特定列に入力さ...
-
pythonにCでのexternはありますか
-
C言語について
-
EOM間にperl文を作成したい
-
Rstudioによるテキストマイニン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
エクセルシート名の制限を変更...
-
COBOLのCOMP形式について
-
ビットスワップとバイトスワッ...
-
char str[256]の256の意味は?
-
バイナリとBCDコード
-
ピクセル,dpiから容量(バイト...
-
バイト列とバイナリ列の違いが...
-
UCS-2の一覧表が欲しい
-
SQLで1バイト、2バイト混在...
-
全角半角を調べるライブラリ関...
-
3バイト文字(UTF-8)をprintfで...
-
1KBが1024byteな理由
-
URLは最高何文字まで可能なので...
-
Javaで日本語1文字のバイト数
-
「1TB」のHDDに日本語は何字入...
-
COBOL PICTUREで X,S,Vの意味
-
memcmp バイナリデータの比較方法
-
機種依存文字をチェックしたい。
おすすめ情報