• ベストアンサー

HEX

HEXで'0x1E','0x1D''0x00' をそれぞれ文字型に1字で入れたいのですがどういう記述をすればよいのでしょうか。

  • hex
  • お礼率0% (0/8)

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.8

参考までに補足です。 >Visual BASIC にはその機能がないため少々困難です。 キャストできますよ。 バイト配列にセットしてあげれば、VBでも操作可能です。。。

その他の回答 (7)

noname#25358
noname#25358
回答No.7

 はい、分かりました(笑)  それは「16進を1桁にする」という意味ではなく、単純に「数値を代入する」という意味です。  16進数というのは、数え方が違うだけで数字は数字ですので、普通に数値として代入することができます。  つまり、0x1e は、見た目上は4文字で構成されていますが、コンピューターはこれ4文字を1つの数字と解釈するのです。  ――が。  混乱の原因は、今ご覧になっている仕様書それ自体が、Visual BASIC では使えないものであるということです。  たしかにC言語ならば、a[0]=0x1e という記述をすることができますが、これはC言語が、「一時的に文字列型を数値型として扱う」という、いわゆる「キャスト機能」を持っているから可能になることで、Visual BASIC にはその機能がないため少々困難です。  ですので、その仕様書を渡した人に、「Visual BASIC では少し難しいと言われたんだけど」と前置きして、どうすればいいか聞いてみてください。  それが困難な場合は別途補足ください。

hex
質問者

補足

どうやら0x1Eはchr(30)で落ち着くようです。(社内討議の結果) っていうかこれ以外に捉えようがないという結論にいたりました。 仕様書書いてる人が汎用の人なんではっきりいって何いっても返っ てこない状況でして^^ windowsのプログラムに動作の説明がないやら テーブル構造図がないやらで何考えてるのかわかんない感じです。 みなさん  本当にありがとうございました。 回答の早さにびっくりしました。またよろしくお願いします。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.6

wkStr = StrConv(bytAry, vbUnicode) でなく、vbFormUnicodeで変換しなければいけないパターンもあるようです。 '0x1E','0x1D''0x00' はこの掲示板に質問をするためのダミーのデータですか。それとも現在のプロジェクトで使用してる生きたデータですか。 もし生きたデータなら、どういう値を返したら正しいのかがわかると、推測しやすいのですが、、、 もしそれが不可能なら、逆に文字列”あ”はバイトでどういう表現がなされているのかだけでもわかると、推測しやすいです。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.5

仕様書やつくりを見てみないとわからないけど、バイトデータから文字列を興すときは、データの入り方によって違うので、二つのパターンがあります。 Dim bytAry(0 To 1) As Byte Dim wkStr As String bytAry(0) = &H1E bytAry(1) = &H1D 'パターン1 wkStr = bytAry 'パターン2 wkStr = StrConv(bytAry, vbUnicode) こんな感じかな? で、おそらく'0x00' は文字列の終了を示してると思います。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

すいません。意味がまだ理解できていません。 一つのフィールドを'0x1E'(30)バイトで出力という意味ですか? それともバイトデータで '0x1E','0x1D''0x00' により、一文字を作成するという意味ですか?

hex
質問者

補足

後者の方です。 吐き出しのサイズはx(1)でHEX"1E"とかって書いてあります。

noname#25358
noname#25358
回答No.3

 基本的に、HEX は、お書きのような形式である限り、絶対に2文字になります。  1文字にはできません。  強引にやるとしたら、4ビットを1文字として扱う圧縮文字を使う方法ですが、これだと目で見ることはできず、なんだかよく分からない文字化け文字になります(ただし、圧縮文字はプログラムの効率が上昇する場合もあります)。

hex
質問者

補足

もしかしたらヘキサでないんでしょうか? 仕様書には0x1eを文字1桁のところに代入と書いてあります。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

#1と同意見しか思いうかばないのですが。。。 どういった答えが望みなのかがよく理解できません。 それぞれを文字列1字ってどういうことですか? もしC言語からの移行ならば、「Cだったらこうなるのに」とかいうイメージが無いと、言いようが・・・ないのでは・・・ もっと詳細な情報が欲しいです。

hex
質問者

補足

現在accessでテキスト吐き出しをしています。 仕様書には項目は桁数1桁で'0x1E'をセットと書いてあります。 先ほどので行った場合'51'が文字列に代入されてしまってたぶんちがうと 思いました。 これでわかりますでしょうか? よろしくお願いします。

  • ykkw_2001
  • ベストアンサー率26% (267/1014)
回答No.1

dim moji1 as string dim moji2 as string dim moji3 as string moji1=ASC(&H1e) moji2=ASC(&H1d) moji3=ASC(&H00)

hex
質問者

補足

Dim RS As String Dim GS As String RS = Asc(&H1E) GS = Asc(&H1D) RSの値が'51' RSの値が'50' になってしまいました。 他にないでしょうか?

関連するQ&A

  • HEX値

    HEX値 1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F 数字が大きいのは、一番大きいのはFですか? 0は一番小さいですか? それとも1ですか?

  • HEXデータで1ビットずらしたHEXにするアプリ

    現在、プロトコルアナライザで得た波形データと、実際に送信しているデータとで違いがあるとのことで、たぶんSPI方式と思われる回路でのプロトコルで調査しているところです。 ここで得られたHEXデータ 0x1F,0x40,0x56,0xC7 このHEXデータを 2'0001111, 2'01000000, 2'01010110, 2'11000111 このデータを1bitずつ右にローテートしてずらして、HEXデータを素早く出力してくれるような計算ソフトとかご教示いただけないでしょうか? どうぞ、よろしくお願い致します。

  • hex関数について

    print hex( 0x41 );        結果 101 ですが 0x41は 16進数41で  10進数の65ですね? なぜ101となるんでしょうか? 教えてください。

    • ベストアンサー
    • Perl
  • 16進数関数のhex関数について

    16進数を扱う、「hex」という関数があったようななかったような・・・。 16進数の文字列を、例えば、「"0a"」という文字列が あって、この"0a"の前に"0x"という文字列を付け足して"0x0a"とし、この"0x0a"を10という整数値に変換したいのですが、どのようなソースファイルになりますか。 初心者なので、どうプログラムを組んで良いのか分かりませんでしたので、教えて下さい。

  • int → char → string の変換

    お世話になります。 現在 VisualStudio2005 C# のコンソールアプリを作っています。 以下の場合どのようにすれば解決しますでしょうか? int code = 0xF97E; // この値をF97Eという文字(外字)にしたい 以下のように記述してみましたが、駄目でした。 int hex1 = ((code & 0xff00) >> 8); // (hex1==0xF9)になる int hex2 = (code & 0x00ff); // (hex2==0x7E)になる string s = char.ToString((char)hex1) + char.ToString((char)hex2 )); // (s==u~==0x757E)になってしまう。 原因がわかる方いらっしゃれば教えてください。

  • Hex関数

    こんにちは VBでちょっとしたことなんですが、自前の関数を作成するかどうかで悩んでいます。 nバイトの配列データ(dim xx() as Byte と宣言されている)を1バイトあたり2桁で表示したいのですが、Hex関数(あるいはHex$関数)では、0x00 の場合や0~9の場合、"0"や1桁になってしまうんですね。 もし組み込み関数で1バイトを2桁16進数表示できる変換関数があれば、自前のものより高速だし楽だと思い、迷ってます。 「そんなものはないので自分で作れ」とか「こんなのあるよ」とか教えてください。お願いします。

  • 秀丸の置換で/*コメント文字列*/"を削除したい。

    秀丸の置換の方法を教えて頂きたく質問させて頂きます。 次の文字列がテキストファイルの一行分です。 {{'\x0e', 9, 16},{0x00,0x00, /* ................ */0x03,0x00, /* ......%%........ */0x1D,0x00, /* ...%%%.%........ */0x11,0x00, /* ...%...%........ */0x13,0x00, /* ...%..%%........ */0x1D,0x00, /* ...%%%.%........ */0x11,0x00, /* ...%...%........ */0x11,0x00, /* ...%...%........ */0x11,0x00, /* ...%...%........ */0x13,0x00, /* ...%..%%........ */0x17,0x00, /* ...%.%%%........ */0x36,0x00, /* ..%%.%%......... */0x70,0x00, /* .%%%............ */0x60,0x00, /* .%%............. */0x00,0x00, /* ................ */0x00,0x00 /* ................ */}}, この文の中の/*から*/のコメントの文字列を削除して {{'\x0e', 9, 16},{0x00,0x00,0x03,0x00,0x1D,0x00,0x11,0x00,0x13,0x00,0x1D,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x13,0x00, 0x17,0x00,0x36,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00}}, このような文字列にしたいのですが、どのようにすればよいか、どうぞご教授のほどよろしくお願い致します。

  • DOUBLE型の16進HEX文字列変換について

    12バイトのHEX文字列(FFFFFFFFFFFFFFFFFFFFFFFF)などを をいったん、10進に変換し、DOUBLE型の変数に設定し、 数値演算を行い 再度HEX文字列(FFFFFFFFFFFFFFFFFFFFFFFF)に変換を行いたいのですが、 変換の方法がわからず困っています。 HEX関数はLONGでしかおこなえないようで・・ すみませんが、ご教授いただけると助かります。 宜しくお願いいたします。

  • HEXを文字に変換するには

    お世話になります。初心者です。 VCC++ 6.0, XPで開発してます。 今、unsinged char型で定義したbという引数に入っているHEXの「0x02」を、CString型で定義したRXbという引数に「02」という文字として変換し、その「02」をエディタ上で「02」と表示したいのですが、sscanfなどを使った場合、どのように書けばいいのでしょうか。 また、sscanf以外で、変換できる方法があればご教示いただけますでしょうか。 宜しくお願いいたします。

  • VB6にてHEXコード「EE」をファイルに書きたい。

    VB6を使用して、HEXコードの「EE」をテキストファイルに出力しようと考えています。 私が確認したところ HEXコードの「DF」は、Chr(&HDF)にて出力できるのですが、 HEXコードの「E0」以降はうまく出力できません。 どなたかお解りになる方ご教授を、よろしくお願いします。

専門家に質問してみよう