- ベストアンサー
HEX
HEXで'0x1E','0x1D''0x00' をそれぞれ文字型に1字で入れたいのですがどういう記述をすればよいのでしょうか。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
参考までに補足です。 >Visual BASIC にはその機能がないため少々困難です。 キャストできますよ。 バイト配列にセットしてあげれば、VBでも操作可能です。。。
その他の回答 (7)
はい、分かりました(笑) それは「16進を1桁にする」という意味ではなく、単純に「数値を代入する」という意味です。 16進数というのは、数え方が違うだけで数字は数字ですので、普通に数値として代入することができます。 つまり、0x1e は、見た目上は4文字で構成されていますが、コンピューターはこれ4文字を1つの数字と解釈するのです。 ――が。 混乱の原因は、今ご覧になっている仕様書それ自体が、Visual BASIC では使えないものであるということです。 たしかにC言語ならば、a[0]=0x1e という記述をすることができますが、これはC言語が、「一時的に文字列型を数値型として扱う」という、いわゆる「キャスト機能」を持っているから可能になることで、Visual BASIC にはその機能がないため少々困難です。 ですので、その仕様書を渡した人に、「Visual BASIC では少し難しいと言われたんだけど」と前置きして、どうすればいいか聞いてみてください。 それが困難な場合は別途補足ください。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
wkStr = StrConv(bytAry, vbUnicode) でなく、vbFormUnicodeで変換しなければいけないパターンもあるようです。 '0x1E','0x1D''0x00' はこの掲示板に質問をするためのダミーのデータですか。それとも現在のプロジェクトで使用してる生きたデータですか。 もし生きたデータなら、どういう値を返したら正しいのかがわかると、推測しやすいのですが、、、 もしそれが不可能なら、逆に文字列”あ”はバイトでどういう表現がなされているのかだけでもわかると、推測しやすいです。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
仕様書やつくりを見てみないとわからないけど、バイトデータから文字列を興すときは、データの入り方によって違うので、二つのパターンがあります。 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)
すいません。意味がまだ理解できていません。 一つのフィールドを'0x1E'(30)バイトで出力という意味ですか? それともバイトデータで '0x1E','0x1D''0x00' により、一文字を作成するという意味ですか?
補足
後者の方です。 吐き出しのサイズはx(1)でHEX"1E"とかって書いてあります。
基本的に、HEX は、お書きのような形式である限り、絶対に2文字になります。 1文字にはできません。 強引にやるとしたら、4ビットを1文字として扱う圧縮文字を使う方法ですが、これだと目で見ることはできず、なんだかよく分からない文字化け文字になります(ただし、圧縮文字はプログラムの効率が上昇する場合もあります)。
補足
もしかしたらヘキサでないんでしょうか? 仕様書には0x1eを文字1桁のところに代入と書いてあります。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
#1と同意見しか思いうかばないのですが。。。 どういった答えが望みなのかがよく理解できません。 それぞれを文字列1字ってどういうことですか? もしC言語からの移行ならば、「Cだったらこうなるのに」とかいうイメージが無いと、言いようが・・・ないのでは・・・ もっと詳細な情報が欲しいです。
補足
現在accessでテキスト吐き出しをしています。 仕様書には項目は桁数1桁で'0x1E'をセットと書いてあります。 先ほどので行った場合'51'が文字列に代入されてしまってたぶんちがうと 思いました。 これでわかりますでしょうか? よろしくお願いします。
- ykkw_2001
- ベストアンサー率26% (267/1014)
dim moji1 as string dim moji2 as string dim moji3 as string moji1=ASC(&H1e) moji2=ASC(&H1d) moji3=ASC(&H00)
補足
Dim RS As String Dim GS As String RS = Asc(&H1E) GS = Asc(&H1D) RSの値が'51' RSの値が'50' になってしまいました。 他にないでしょうか?
補足
どうやら0x1Eはchr(30)で落ち着くようです。(社内討議の結果) っていうかこれ以外に捉えようがないという結論にいたりました。 仕様書書いてる人が汎用の人なんではっきりいって何いっても返っ てこない状況でして^^ windowsのプログラムに動作の説明がないやら テーブル構造図がないやらで何考えてるのかわかんない感じです。 みなさん 本当にありがとうございました。 回答の早さにびっくりしました。またよろしくお願いします。