• 締切済み

文字列からASCIIコードの取得方法

teppyの回答

  • teppy
  • ベストアンサー率50% (9/18)
回答No.1

たしかにChr$(151)は「0」を返しますね ただ、この値は制御文字かな?(あまり自信ありません) 自分がASCIIコードの調査用に作成したコーディングを下記に記します イミディエイトウィンドウにて確認できます 着眼点が間違っていたらすみません '~~~~~~~~~~~ Dim Tmp As String Private Sub Command0_Click() Dim i As Integer Tmp = "" For i = 0 To 255 Step 1 Tmp = Tmp & Chr$(i) 'Debug.Print Format(i, "000") & " : " & Chr$(i) Next i Debug.Print Tmp End Sub Private Sub Command1_Click() Dim i As Integer Dim n As Integer Dim w As Byte Dim ret As String n = Len(Tmp) ret = "" For i = 1 To n Step 1 w = Asc(Mid(Tmp, i, 1)) ret = ret & Hex(w \ 16) ret = ret & Hex(w Mod 16) 'Debug.Print Format(i, "000") & " : " & Hex(w \ 16) & Hex(w Mod 16) ret = ret & " " Next i Debug.Print ret End Sub '~~~~~~~~~~~

osaosa42
質問者

お礼

素早い回答有難うございます。 Chr$(151)が、0を返すのは、Windowsで使用されていない文字のため、みたいです。 データの送受信ですが、MSCommのInputModeをバイナリに代えることで実現できました。 それでは、また。

関連するQ&A

  • VBA・VB6.0・VB.NETの文字列型

     失礼します。  Excel97/2000のVBAの文字列型変数は、アスキーコード129-159/224-252のデータを保持できないみたいですが、これはVB6.0/VB.NETなどでもそうなのですか?  つまり、VBAでは、 Sub main()  Dim s as String  s = Chr$(130)  Sheet1.Cells(1, 1) = Asc(s) End Sub  とすると、シートのA1に「0」が表示されてしまうということです。  というのも、私はVB6.0/VB.NETを持っていないのですが、ちょっとVB2.0時代のコードを使う必要が生じたので、VBAで実行してみたところ、以上のような仕様の違いに気付いたのです。  これがVBAだけの特性なのか、最近のVBはこういう仕様になってしまったのかが知りたいのです。

  • 数値を4桁の文字列に戻す方法

    上限4桁の数値を、同じく4桁の文字列に戻すにはどうしたらよいでしょうか? ASC関数を使って「数値」を「文字列」にするのはできます。 しかし、例えば『1』にASC関数を使用すると、『0001』ではなく、文字列の『1』になります。 また、書式で『1』を『0001』に見せるのも不可です。『0000』~『9999』の4桁の文字列に打ちかえるには、どうしたらよいでしょうか?

  • 文字コードに対応する文字が振られていないの?

    windows7を使っています。 エクセルVBAで Sub Sample1() Dim i As Long Dim myRow As Long For i = -32768 To 32767 myRow = myRow + 1 Cells(myRow, 1) = Chr(i) Next i End Sub のコードで文字コードをすべて書き出してみたのですが 空白や「」だけ等がいくつもあります。 これはどうしてでしょうか? 文字コードに対応する文字が振られていないのでしょうか? -32768 To 32767の理由は Asc 関数のヘルプを見たら 「DBCS を使用しているシステムでは、 -32768 ~ 32767 の範囲の値が返されます。」 となっていた為です。

  • 文字列を配列に…。

    VBはまだ始めたばかりで本当に初歩的なことかもしれませんが分かる方がおられたら是非教えて下さい。 text1.textから取り込んだ文字列を”一文字ずつ”(Dim a(100) as stringで宣言した)配列に格納したいのですがどうしたらいいのでしょうか?? <例>text1.textに"abc"と入力しcommandbuttonを押すとa(0)に"a"がa(1)に"b"がa(2)に"c"が格納されるといったかんじです。 ちなみに今私がしたいのはtext1.textに、ある文字列を入れその文字列を文字コードに変換しそれを一文字分ずつ+1してまたそのコードを文字に直しtext2.textに出力するというものです(ようは簡単な暗号化ですね)。 私はAscとChrコマンドを利用して1文字ずつコードをずらしていこうと思っているのですが、他に良い方法などあるのでしょうか?? 本当に初心者でどのようにしらたよいのか分かりません…。 どなたか分かりやすく教えていただけませんでしょうか?? お願いします。

  • VBへの変換の仕方 RS232C送信データとチェックサム

    以下のプログラムをVBに変換する仕方を教えてください。 サンプルプログラム 1110 CHKSUM=0 1120 FOR i=1 to LEN(A$)      'A$は送信データ 1130 CHKSUM=CHKSUM+ASC(MID$(A$,i,1) 1140 NEXT i 1150 C$=CHR$((CHKSUM+13) MOD 256) 1160 PRINT #1,A$;CHR$(13);C$; 私のVBプログラムは1110行から1150行まではそのままで CHKSUM=0 FOR i=1 TO LEN(A$) CHKSUM=CHKSUM+ASC(MID$(A$,i,1) NEXT i C$=CHR$((CHKSUM+13) MOD 256) としました。 送信部分を MSComm1.Output =A$ & CHR$(&H13) & C$ としてみましたが 1160行にあるセミコロン ";" はCHR$(&h3B) として送る必要があるのでしょうか? MSComm1.Output =A$ & CHR$(&h3B) & CHR$(&h13) ・・・・・・ また、データとしてA$="I 02"のチェックサムは "リ" となりますが正しいのでしょうか? 以上ご教示ください。

  • vb2008で文字列から文字列コードを取得する方法

    サイトHTMLをWebBrowserを使用せずに取得するために、 Dim stream As System.IO.Stream = client.OpenRead(tbItemURL.Text) Dim reader As New System.IO.StreamReader(stream) Dim strHtml = reader.ReadToEnd() reader.Close() stream.Close() のような形で文字列を取得しています。 しかし、この場合Sift-jis等の場合、後の作業(一部データ取得)で文字化けに悩まされます。 http://dobon.net/vb/dotnet/string/detectcode.html 上記サイトで「バイト配列」に格納して判別する方法があります。 そこで、文字列をバイト配列に格納しようとしますが…。 文字列→バイト配列には文字コードが必要となります。 Dim data() As Byte = Encoding.UTF8.GetBytes(text) なんだか鶏と卵のような感じになってしまいます。 文字列から文字コードを判別する方法はないでしょうか? よろしくお願いします。

  • VBAで文字コードを取り出したい

    セルに取り込んだ文字列にスペースが含まれ、VBAの" "で読まれません。関数で=CODE(B1)により取り込むと文字コード160です。 VBAで文字コード160で識別したいのですが、chr()などを試してエラーになります。 セル内の文字からmidで取り出したスペース(コード160)を、コード番号で識別してifを使って排除したいのですが、素人ですので、マクロがうまく作れません。 混乱していますが、よろしくお願いします。

  • PL/SQLでSJISの文字コードを取得可能でしょうか

    失礼いたします。 PL/SQLでSJISの文字コードを取得したいのですが可能でしょうか。 文字コードのみを取得したいので、CONVERT関数やCHR関数などの変換関数は不要です(WIN拡張以外の外字判定に使用するため)。 ORACLEは8iです。 どなたかご存知の方、いらっしゃいましたら教えていただけませんでしょうか。 よろしくお願いいたします。

  • 文字列の切り出しとその文字列からの文末削除がしたい

    while(<GO>){ if($_ =~ /BOOK(.+)/){ print OUT "\n$1,"; } #01234を見つけたら、一番最初の文字列を抜き出す if($_ =~ /012345 (.+)(.+)(.+)(.+)(.+)(.+) /){    #その文字列の文末を削除 $data=(.+) substr($data, -3, 2) = ""; print OUT "$1,"; } } close(OUT); データ例 #####BOOK###### ###################33########################## 012345 6.6666ppm 2.6asc 3.9asc GOOD 0 0 012345 1.6666pm 2.6asc 3.9asc NO 0 0 012345 6.6656pppm 2.6asc 3.9asc MIN 0 0 ###################36########################## 012346 6.6666ppm 2.6asc 3.9asc GOOD 0 0 012346 1.6666ppm 2.6asc 3.9asc NO 0 0 012346 6.6656ppm 2.6asc 3.9asc MIN 0 0 上記のようなデータから一番左の文字列があったら、 一番最初の文字列を切り出し,文末を削除したいのですが、 作成したperlでは6.6666ppm 2.6asc 3.9asc まで切り出して且文末が削除できません。 どうかアドバイスをお願いします。

    • ベストアンサー
    • Perl
  • VB2005の文字列関連の関数について

    VB2005で ある文字列中の特定文字の位置を返す関数はありますか? たとえば "1234567890" という文字列中で"56"という文字列は "5"番めにあるというような。 N88BasicのPOS$のようなイメージです。