No.8ベストアンサー
- 回答日時:
ANo.4の者です。
> 初期段階でString型の配列に入ってるものが16進数を文字列表記したものなので
「16進数を文字列表記したもの」というと、普通は数字の0~9、アルファベットのA~F、a~fの文字で構成されたものを指します (マイナス記号や小数点を含む場合もあります)。つまり、"9F8D864E"みたいな文字列です。しかし、元の質問文だと"あいうえお"や"aiueo"という例が挙がっていて「16進数を文字列表記したもの」には見えません。
さらに言えば、「String型の配列」と書かれていますが質問文にもこれまでの補足にも配列でないStringしか現れていません。Stringの配列だったら、
String s[] = { "123", "ABC", "あいうえお" };
のように初期化して、s[2]のようにして要素を参照します。
初心者だということですが、いろいろな用語を間違って使っているのではないかと思います。
> 演算後の結果が
> 元の文字数より大きくなるのですが
> これは当たり前のことなのでしょうか?
結果を「16進数の文字列としてあらたなString型の変数」として欲しいと言うことだったので、1文字ずつの文字コードを論理演算した結果 (c) の値を16進数の文字列に変換 (Integer.toHexString(c)) してつないでみました。元の文字列での1文字を最大で4桁の16進数表記(+ 改行文字)に対応させているので、元の文字列より長くなったのは当然です。
質問者さんの期待していたものとは違ったようですが、では何が違いますか?
未だに質問者さんが何をやりたいのかがさっぱり分からないので、攻め方を変えます。次の各質問に答えてください。
(質問A) 「論理演算」の対象になる文字列は?
(A-1) "あいうえお" "aiueo"など任意の文字列
(A-2) 数字の0~9、アルファベットのA~F、a~fの文字だけを含む、16進数の文字列表記
(A-3) どちらでもない
(質問B) 「論理演算」の対象になる2つの文字列の長さは?
(B-1) 必ず同じ長さ
(B-2) 違っていてもいい
(質問C) 「論理演算」の対象になる文字列に "C" という文字が含まれていたとき、論理演算に使用する値は何?
(C-1) "C"の文字コードである67
(C-2) "C"を1桁の16進数文字列と見なして12
(C-3) どちらでもない
(質問D) 「論理演算」の対象になる文字列に "あ" という文字が含まれていたとき、論理演算に使用する値は何?
(D-1) "あ"は文字列には含まれない
(D-2) "あ"のUnicodeでの文字コードである12354
(D-3) "あ"の文字コードだが、Unicode以外のもの
(D-4) どれでもない
(質問E) 元の質問文にある"あいうえお"と"aiueo"だったら、結果として期待している文字列は何?
これでも確認したいことの一部でしかありませんが、これら全てに質問者さんが答えられないようだと、何をすればいいのかここの回答者の誰にも分かりません。
No.7
- 回答日時:
NO4です
byteにキャストしているのは
int以下同士の演算結果は必ず
intになるからです。
論理演算も然り。
それをbyte配列に格納するため
byteにキャストしているだけです。
別のところからとってきてるとか、
例えば地球の真裏からとってきてても
String型である以上、関係ないと思いますが。
この回答への補足
実行結果がなにかよくわからない
配水管みたな形になってしまうのですが
こちら側になにかたりないものでもあるのでしょうか?
最終的にString型の文字列として結果を保持したいのですが・・・
No.6
- 回答日時:
補足を読んでもどういう結果が欲しいのかがさっぱり分かりません。
a.length()とb.length()が必ず等しいものと決め打ちして、試しに想像でこんなものを書いてみました。質問者さんが期待したものとどう違っているでしょうか。
String result="";
for (int i=0; i<a.length(); i++) {
char c=(char)(a.charAt(i) 論理演算 b.charAt(i));
result=result+Integer.toHexString(c)+"\n";
}
この回答への補足
わかりづらくてすいません。
端的に言うとString型に入っている文字列同士を
論理演算した後に新しいString型に文字列として入れたいって感じです。
初期段階でString型の配列に入ってるものが16進数を文字列表記したものなので
それを普通の16進数にもどして論理演算したかったんです。
salsberryさんが書いてくれたコードをためしたのですが
通ったのは通ったんですが演算後の結果が
元の文字数より大きくなるのですが
これは当たり前のことなのでしょうか?
No.5
- 回答日時:
No4補足です
>>2バイト文字と1バイト文字をどういった風に扱うか
>>って問題は別問題なのでここでは省略(結構面倒だし)
って書いたけどこの場合そんなに面倒でなさそう
charAtだけでいけそうですね。
No.4
- 回答日時:
Tacosanの回答をコード化しただけですけど。
。。2バイト文字と1バイト文字をどういった風に扱うか
って問題は別問題なのでここでは省略(結構面倒だし)
1バイト文字での実装
※日本語で[論理演算子]って書かれたところは
好きな論理演算子を入れてください
final byte [] bytes1 = "abcde".getBytes();
final byte [] bytes2 = "auieo".getBytes();
final int loopCount = Math.max(bytes1.length, bytes2.length);
final byte [] original = new byte [loopCount];
for (int i = 0; i < loopCount; original[i] = (byte)(bytes1[i] 論理演算子 byte2[i]), i++);
System.out.println(new String(original));
この回答への補足
別のところから取得してきた文字列なので
String型になってしまってるんですよね・・・
byte型にキャストしたほうがよろしいのでしょうか?
No.3
- 回答日時:
No.1です
>両方共をビット列にして論理積や論理和をしたかったんですが・・・
>無理なのでしょうか?
論理演算自体はできます。
しかし、文字同士を論理演算した場合、同じ文字でも「文字コード」によって内容が変わってくる場合や、そもそもの一文字に対して必要なバイト数が違うということを把握しているかの確認です。
理屈的には一文字ずつ取り出して行えばいいのです。
この回答への補足
ビット列に変換してから論理演算したかったのです。
文字同士というよりはString型の配列に入った
ビット列同士っていう感じでお願いしたいのですが・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- PHP 空文字 "" ですが 空文字の意味を教えてください。 3 2022/08/05 03:51
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Perl perlについての質問 2 2022/10/17 15:25
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
BCD形式で時刻を!
-
偶数ビットだけと奇数ビットだ...
-
hiddenの値を消したくない!
-
ダブルクォーテーションを含む...
-
char型での演算子
-
結合した文字列をファイル名に...
-
C言語の変数(LSB)の合わせ込...
-
JSPでの計算結果表示
-
DateTimePickerに値を入れたい...
-
getParameterの値変更
-
PSQLExceptionが発生する
-
Stringクラスの変数の格納アド...
-
wsprintf関数の使い方について
-
8桁整数を限りなく短い文字列に...
-
JSP内でfor文を使用し、出力結...
-
Evaluate()に文字列の形式の数...
-
実行シェルからCOBOLへパラメー...
-
JSPでHashMap・配列の変数の値...
-
VB6,論理演算子Orの使い方がわ...
-
String型の値が大文字か小文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
wsprintf関数の使い方について
-
ArrayListの要素数の上限
-
BCD形式で時刻を!
-
javaのCSVデータ読込についてです
-
DateTimePickerに値を入れたい...
-
C言語の変数(LSB)の合わせ込...
-
JSPでHashMap・配列の変数の値...
-
matchesを否定文として使う方法...
-
JSPでの計算結果表示
-
hiddenの値を消したくない!
-
結合した文字列をファイル名に...
-
excel vba 時間計算と条件分岐...
-
実行シェルからCOBOLへパラメー...
-
long型に値を代入したい。
-
【Excel VBA】繰り返し処理がで...
-
Stringクラスの変数の格納アド...
-
PSQLExceptionが発生する
-
ResultSetの内部構造(Java)
-
String str = "a\\\\b\\\\c";
おすすめ情報