C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.102004 の関連記事表示

<< 0 >>
■102004  byteをstringに
□投稿者/ たかし -(2023/05/26(Fri) 16:57:09)

    分類:[C#] 

    宜しくお願い致します

    c# Windows フォームアプリケーション .Net Framework

    string sendMessage = "RDS EM000.H 7" + '\r';
    byte[] byteReciveMessage = SendAndRecieve(sendMessage);
    string result = encoding.GetString(byteReciveMessage);

    byteをstringに変えた後を教えて頂けないでしょうか

    今 resultの中に "3646 3142 3036 3137 3031 3031 0000\r\0"と入っているのですが
    それを"6F1B06170101"と表示させたいのですがどう書けばよろしいでしょうか
    宜しくお願い致します
親記事 /過去ログ178より / 関連記事表示
削除チェック/

■102005  Re[1]: byteをstringに
□投稿者/ WebSurfer -(2023/05/26(Fri) 17:09:30)
    No102004 (たかし さん) に返信

    > 今 resultの中に "3646 3142 3036 3137 3031 3031 0000\r\0"と入っているのですが
    > それを"6F1B06170101"と表示させたいのですがどう書けばよろしいでしょうか

    どういう変換法則があるのですか?
記事No.102004 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102007  Re[2]: byteをstringに
□投稿者/ たかし -(2023/05/26(Fri) 17:22:50)
    No102005 (WebSurfer さん) に返信
    > ■No102004 (たかし さん) に返信
    >
    >>今 resultの中に "3646 3142 3036 3137 3031 3031 0000\r\0"と入っているのですが
    >>それを"6F1B06170101"と表示させたいのですがどう書けばよろしいでしょうか
    >
    > どういう変換法則があるのですか?

    分かりにくくてすみません
    今現在変換させているのは下記のようにしています

    for (int i = 0; i < 8; i++)//0-7
    {
    string sendMsg = "RDS EM00" + i + ".U 1" + '\r';

    Encoding enc = Encoding.ASCII;
    byte[] sendBytes = enc.GetBytes(sendMsg);

    netstream.Write(sendBytes, 0, sendBytes.Length);
    Console.WriteLine(sendMsg);

    System.IO.MemoryStream ms = new System.IO.MemoryStream();
    byte[] resBytes = new byte[256];
    int resSize = 0;

    do
    {
    resSize = netstream.Read(resBytes, 0, resBytes.Length);
    if (resSize == 0)
    {
    messagebox("サーバーが切断しました。");
    break;
    }
    ms.Write(resBytes, 0, resSize);
    }
    while (netstream.DataAvailable || resBytes[resSize - 1] != '\n');

    string resMsg = enc.GetString(ms.GetBuffer(), 0, (int)ms.Length);
    ms.Close();

    resMsg = resMsg.TrimEnd('\n');


    ushort number = ushort.Parse(resMsg);
    byte[] byteArray = BitConverter.GetBytes(number);
    Array.Reverse(byteArray);
    string str = Encoding.ASCII.GetString(byteArray);
    numb[i] = str;
    }

    string number2 = null;
    for (int k=0; k<8; k++)
    {
    number2 += numb[k];
    }

    number2 = number2.TrimEnd('\0');
    searchTextBox.Text = number2;

    無理やり変換して最後に繋いでいるのですが短いコードで出来る方法はないでしょうか
記事No.102004 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102013  Re[3]: byteをstringに
□投稿者/ WebSurfer -(2023/05/26(Fri) 19:11:45)
    No102007 (たかし さん) に返信

    > 分かりにくくてすみません
    > 今現在変換させているのは下記のようにしています
    >
    > for (int i = 0; i < 8; i++)//0-7
    > {
    > string sendMsg = "RDS EM00" + i + ".U 1" + '\r';
    >

    さっぱり分かりません。質問者さんの前のスレッドに遡って読まないと何がしたいのか
    分からないのではと思いますが、とてもそんな気力は沸いてきません。

    質問者さんがそれをここに書いてあること以外は知り得ない赤の他人が読んでわかる言葉
    で、

    > 今 resultの中に "3646 3142 3036 3137 3031 3031 0000\r\0"と入っているのですが
    > それを"6F1B06170101"と表示させたいのですがどう書けばよろしいでしょうか

    の変換法則を言語化してもらう必要があります。

記事No.102004 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102006  Re[1]: byteをstringに
□投稿者/ kiku -(2023/05/26(Fri) 17:18:46)
    No102004 (たかし さん) に返信
    > 宜しくお願い致します
    >
    > c# Windows フォームアプリケーション .Net Framework
    >
    > string sendMessage = "RDS EM000.H 7" + '\r';
    > byte[] byteReciveMessage = SendAndRecieve(sendMessage);
    > string result = encoding.GetString(byteReciveMessage);
    >
    > byteをstringに変えた後を教えて頂けないでしょうか
    >
    > 今 resultの中に "3646 3142 3036 3137 3031 3031 0000\r\0"と入っているのですが
    > それを"6F1B06170101"と表示させたいのですがどう書けばよろしいでしょうか
    > 宜しくお願い致します

    こんな感じで

    var testdata1 = new byte[] { 0x36, 0x46, 0x31, 0x42, 0x30, 0x36, 0x31, 0x37, 0x30, 0x31, 0x30, 0x31, 0x00, 0x00, 0x0d, 0x0a };
    var testdata2 = testdata1.Take(6 * 2).ToArray();
    var testresult = System.Text.Encoding.ASCII.GetString(testdata2);
記事No.102004 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102010  Re[2]: byteをstringに
□投稿者/ くま -(2023/05/26(Fri) 18:37:43)
記事No.102004 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102009  Re[1]: byteをstringに
□投稿者/ furu -(2023/05/26(Fri) 18:32:16)
    No102004 (たかし さん) に返信
    > 今 resultの中に "3646 3142 3036 3137 3031 3031 0000\r\0"と入っているのですが
    > それを"6F1B06170101"と表示させたいのですがどう書けばよろしいでしょうか
    var number2 = 
        result
            .TrimEnd('\r', '\0')
            .Split(' ')
            .Where(a => a != "0000")
            .Select(a => ((char)Convert.ToInt32(a.Remove(2), 16)).ToString() +
                         ((char)Convert.ToInt32(a.Substring(2), 16)).ToString())
            .Aggregate((a, b) => a + b);
    
    もうちょっとなんとかなりそうな
記事No.102004 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102015  Re[2]: byteをstringに
□投稿者/ くま -(2023/05/26(Fri) 19:54:19)
    追記です

    初めの質問だと
    > string sendMessage = "RDS EM000.H 7" + '\r';
    連続データ読出、拡張データメモリの0番から7バイト(ワード)16進数で取得する
    16進数で取得する場合5文字(数字4文字+スペース)で1ワードなので
    7バイト * 5文字 = 35文字 = 35バイト応答内容を取得する

    次に書かれた内容だと
    > string sendMsg = "RDS EM00" + i + ".U 1" + '\r';
    連続データ読出、拡張データメモリの0番から1バイト(ワード)符号無し10進数で順次取得する
    10進数で取得する場合6文字(数字5文字+スペース)で1ワードなので
    1バイト * 6文字 = 6文字 = 6バイトずつ応答内容が帰ってきていませんか?

    疑問点1.
    "DM"(データメモリ)ではなく
    "EM"(拡張データメモリ)で大丈夫ですか?
    その場合メモリアドレス0番からの参照でよいのですか?

    疑問点2.
    応答内容が4バイトの場合エラーとなります。
    チェックしている所が見当たりませんが大丈夫ですか?

    疑問点3.
    "EM"(拡張データメモリ)に入っている値は数値それとも文字どちらですか?

    疑問点4.
    サンプルを提示したりしているのですが試されないのはなぜ?
    vb.netからC#への変換はサイトで自動変換できますし、よくわからなければ「vb.net→C#変換がわからない」
    と書いていただけたら変換したソースをお渡しする事もできるのですが...?
記事No.102004 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102016  Re[1]: byteをstringに
□投稿者/ HattariB -(2023/05/28(Sun) 10:05:35)
    No102004 (たかし さん) に返信

    横槍失礼しますけど、
    「たかしさん」は、こういった掲示板に質問を投げかけるための基礎知識が足りないか、
    記憶が曖昧で、適切な質問を作れていないように思えます。

    並行で良いから、そこを補うための努力も必要だと思いますわ。

    せめて、「数値・文字表現」、「2進数・10進数・16進数」、ビット、バイト、文字コード...
    とかの理解が出来れいれば、

    「通信で得た文字コード列をHEX文字列で表記したい...」

    みたいな質問ができるんじゃぁ無いすか?

    基礎のお勉強が足りてないし、それは掲示板とかで求めるもんじゃぁないすよ。
記事No.102004 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102018  Re[2]: byteをstringに
□投稿者/ HattariB -(2023/05/30(Tue) 06:40:25)
    No102004 (たかし さん) に返信
    蛇足にもうひとつ。

    C#に限らず、プログラミングに関する、勉強の順序みたいな指針を伝えてくれる一文を紹介しますね。
    引用したのはCだけど。

    /*ここから
    どんなに優れた記事も、全範囲をカバーする教科書やC言語のマニュアルを注意深く読むことの代用とはならない。
    C言語に関心があって、このグループを読もうとする者であれば、

    これらのマニュアルを何冊か、できれば数回読むことにも関心を払うことであろう。

    ・・・・・

    Cに関する質問でこの本に答えの載っていないものがあれば、

    でたとこ勝負で ネットに質問するのではなく、
    教科書を何冊かあたるか博識な同僚に相談すること。

    http://www.kouno.jp/home/c_faq/c0.html#0
    ここまで*/

    ネット以外での「たかしさん」にとってのバイブルと、身近な同僚を見つけようよ。
記事No.102004 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102019  Re[3]: byteをstringに
□投稿者/ たかし -(2023/06/02(Fri) 15:35:48)
    No102018 (HattariB さん) に返信

    ありがとうございます
    その通りだと思います
    皆さんすみませんでした。行き当たりばったりの質問ばかりになってしまいましたことを
    お詫びいたします
    もう少し勉強して、考えて質問ができる様にさせて頂きたいと思います
記事No.102004 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102020  Re[4]: byteをstringに
□投稿者/ HattariB -(2023/06/02(Fri) 22:45:27)
    No102019 (たかし さん) に返信
    へぇー
    見どころはあるかもね。

    勉強の過程で、ふと何かにすがってしまう事は、誰しもによくある事なので、
    詫びを入れる必要は、、、、あっても良いかもだけど、
    オイラもこの板で意思疎通の失敗を何度かやらかしてしまってるから、本当は他人に言えなかったりもする。

    >もう少し勉強して、
    今時、C#でPLCと通信する事はよくある事だし、文字コードをモチーフにしてデータの扱い方を覚えさせるってのも良くあるので、
    初めてPLCを扱う処じゃ無かったら、
    コマンド送って→応答貰って→表示して、、、
    っつーサイクルのソースも枯れていると思うので、おそらく「OJTか何かの課題だったんだろうな」と思ったのは正直なところ。

    最初の質問でも、2回目の質問でも、良いヒントと、良い誘導はあったので、
    それらが言わんとしているところを理解するべく勉強すればよかったのにと思います。

    知らないことは罪ではない。頑張ってください。

    ※1ニブルは4ビット。1オクテットは8ビット。asciiコードは0x30が'0'。
記事No.102004 のレス /過去ログ178より / 関連記事表示
削除チェック/

■102021  Re[4]: byteをstringに
□投稿者/ WebSurfer -(2023/06/03(Sat) 09:55:21)
    No102019 (たかし さん) に返信

    No102013 で、

    > 質問者さんがそれをここに書いてあること以外は知り得ない赤の他人が読んでわかる言葉
    > で、
    >
    >>今 resultの中に "3646 3142 3036 3137 3031 3031 0000\r\0"と入っているのですが
    >>それを"6F1B06170101"と表示させたいのですがどう書けばよろしいでしょうか
    >
    > の変換法則を言語化してもらう必要があります。

    と書きましたが、せめて何がしたいのかを書けませんか?

    例えば、

    "3646 3142 3036 3137 3031 3031 0000\r\0" と言う文字列の中の 36 46 31 42 30 36 ...
    は 16 進数の ASCII コード(Shift_JIS ?)。それらに対応する文字 6 F 1 B 0 6 ... か
    らなる文字列 "6F1B06170101" を取得したい。

    ASCII, Shift_JIS コードと言うのが何だかわからなければググれば参考になる記事がヒッ
    トします。例えば下記:

    ASCIIコード表
    https://e-words.jp/p/r-ascii.html

    文字コード表 シフトJIS(Shift_JIS)
    http://charset.7jp.net/sjis.html
記事No.102004 のレス /過去ログ178より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -