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

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

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

No.91589 の関連記事表示

<< 0 >>
■91589  string型からint型への変換について
□投稿者/ usushio -(2019/07/11(Thu) 12:00:39)

    分類:[C/C++] 

    Microsoft VisualC++で開発を行っております。

    232Cでデータの送信を行おうとしています。
    送信するためのデータとして以下のデータをバイトデータに変換しようと思っています。

    std::string makeData[8] = {"57","01","00","00","02","3A","",""};


    配列に00や0x00が含まれる場合には配列の終端を示しているとありました。
    00の情報まで送信したいのですが、バイトデータを送信したい際には
    int型に変換して送信できるのでしょうか。
親記事 /過去ログ158より / 関連記事表示
削除チェック/

■91590  Re[1]: string型からint型への変換について
□投稿者/ WebSurfer -(2019/07/11(Thu) 12:36:23)
    No91589 (usushio さん) に返信

    > 配列に00や0x00が含まれる場合には配列の終端を示しているとありました。

    文字 '0' は ASCII コードで 0x30 なので、文字列 "00" はバイト列で 0x30 0x30 になり、
    そのバイト列をそのまま送信すれば良いという訳ではないのでしょうか?
記事No.91589 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91592  Re[2]: string型からint型への変換について
□投稿者/ usushio -(2019/07/11(Thu) 13:09:56)
    No91590 (WebSurfer さん) に返信
    > ■No91589 (usushio さん) に返信
    >
    >>配列に00や0x00が含まれる場合には配列の終端を示しているとありました。
    >
    > 文字 '0' は ASCII コードで 0x30 なので、文字列 "00" はバイト列で 0x30 0x30 になり、
    > そのバイト列をそのまま送信すれば良いという訳ではないのでしょうか?


    返答ありがとうござます。

    配列に格納している"00"はASCIIコードの0x00として送信したいと思っております。
    配列には、HEXデータを文字列として保持させています。

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

■91594  Re[3]: string型からint型への変換について
□投稿者/ WebSurfer -(2019/07/11(Thu) 14:15:18)
    No91592 (usushio さん) に返信

    > 配列に格納している"00"はASCIIコードの0x00として送信したいと思っております。
    > 配列には、HEXデータを文字列として保持させています。

    意味不明です。最初の質問の、

    "57","01","00","00","02","3A"

    はそれぞれ 0x57, 0x00, 0x00, 0x02, 0x3A というバイト列を送りたい?

    では、,"","" はどうしたいのですか?

    そもそも、最初の質問にあった、

    > 配列に00や0x00が含まれる場合には配列の終端を示しているとありました。

    は何か勘違いしてませんか?
記事No.91589 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91606  Re[4]: string型からint型への変換について
□投稿者/ usushio -(2019/07/12(Fri) 15:55:13)
    No91594 (WebSurfer さん) に返信
    > ■No91592 (usushio さん) に返信

    >>配列に00や0x00が含まれる場合には配列の終端を示しているとありました。
    >
    > は何か勘違いしてませんか?
    >

    私自身違う認識で覚えていたのでしょうか。
    再度、学習しなおします。

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

■91591  Re[1]: string型からint型への変換について
□投稿者/ 774RR -(2019/07/11(Thu) 13:07:16)
    どう変換すると適切なのか読者には規則がわからないっすよ

    "57" を 0x35 0x37 に変換するのか(要するに変換なし)
    "57" を 0x57 に変換するのか( ASCII->BINARY )
    "" ってどう変換するの? 実は終了マーク?

    > 配列に00や0x00が含まれる場合には配列の終端を示しているとありました。
    ちょっと違う

    たぶんこの文言が開設しているのは「 C の文字列」のことで std::string の話ぢゃない
    C において文字列とは char の配列の一部分のことで 0x00 までだ、ってことだろう。

    char hoge[] = { 'h', 'o', 'g', 'e', '\0', 'p', 'i', 'y', 'o' };
    があるとき、この配列の大きさは9文字分、文字列としては "hoge" の5文字分
    今回の変換規則には全く関係ない
記事No.91589 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91593  Re[2]: string型からint型への変換について
□投稿者/ usushio -(2019/07/11(Thu) 13:33:20)
    No91591 (774RR さん) に返信

    返答ありがとうございます。
    > どう変換すると適切なのか読者には規則がわからないっすよ
    >
    > "57" を 0x35 0x37 に変換するのか(要するに変換なし)
    > "57" を 0x57 に変換するのか( ASCII->BINARY )
    > "" ってどう変換するの? 実は終了マーク?

    言葉足らずでした、申し訳ありません。
    "57"の文字列を0x57に変換し、最終的には01010111に変換したいと思っています。
    これを配列内のすべてに適用し、Checksumの算出を行うため、変換をバイトコードへの変換を考えています。
    ""は文字列を囲んで表すためのマークであると認識しています
    そのため、変換は行うつもりはありません。

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

■91595  Re[3]: string型からint型への変換について
□投稿者/ 774RR -(2019/07/11(Thu) 14:59:19)
    たぶんに std::string など全く不要で単純に「バイトの列」にすればよく

    #define elementsof(x) (sizeof(x)/sizeof(0[x]))
    const uint8_t makedata[] = { 0x57, 0x01, 0x00, 0x00, 0x02, 0x3A };
    TransmitData(makedata, elementsof(makedata));

    で OK これならチェックサムや CRC を計算するのも簡単。

    単なるバイト列として扱うとき 0x00 が配列途中にあっても「終端」ぢゃないっすよ。単に値。
    今やるべきことは、バイト列+バイト数をセットにして扱うのが適切でしょ。
    「文字列」という語は今は完全に忘れ去るべき時。
記事No.91589 のレス /過去ログ158より / 関連記事表示
削除チェック/

■91607  Re[4]: string型からint型への変換について
□投稿者/ usushio -(2019/07/12(Fri) 15:56:19)
    No91595 (774RR さん) に返信
    > たぶんに std::string など全く不要で単純に「バイトの列」にすればよく
    >
    > #define elementsof(x) (sizeof(x)/sizeof(0[x]))
    > const uint8_t makedata[] = { 0x57, 0x01, 0x00, 0x00, 0x02, 0x3A };
    > TransmitData(makedata, elementsof(makedata));
    >
    > で OK これならチェックサムや CRC を計算するのも簡単。
    >
    > 単なるバイト列として扱うとき 0x00 が配列途中にあっても「終端」ぢゃないっすよ。単に値。
    > 今やるべきことは、バイト列+バイト数をセットにして扱うのが適切でしょ。
    > 「文字列」という語は今は完全に忘れ去るべき時。
    >


    ありがとうございます。
    回答していただいた内容を参考に、データの作成を行うことができました。
記事No.91589 のレス / END /過去ログ158より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -