• ベストアンサー

大小まじりの文字列より使用バイトサイズを取得する

いつもお世話になります。さっそくですが… VB.NETにて DIM Dmy AS String Dmy="あaaあ" 当然ですがDmyのバイト単位のレングスは6となると思います。このバイト単位のレングスを取得する方法を教えて頂けませんでしょうか?(VB6ですとストリングコンバートを使用すると取得可能なのですが…) お願いいたします。

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

  • ベストアンサー
回答No.2

MsgBox(System.Text.Encoding.GetEncoding(932).GetByteCount(Dmy)) MsgBox(System.Text.Encoding.GetEncoding("Shift-JIS").GetByteCount(Dmy))

その他の回答 (1)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

LenB関数を使いましょう。 Dim Dmy As String Dmy = "あaaあ" Debug.Print Len(Dmy) ' 4(←文字数)になる Debug.Print LenB(Dmy) ' 6(←バイト数)になる

関連するQ&A

  • 文字列から特定の数値を取得

    お世話になります。 VB超初心者ですので宜しくお願いします。 【例】 Dim strValue As String strValue = "11,21,23,31,32,33,34,35,36,41,42,43" カンマで区切られた各数値を取得するにはどのような処理を すればいいのでしょうか

  • VBFixedStringAttribute取得

    お世話になります。 【環境】 VisualStudio2013(ASP.NET) VB6→Visualstudio2013にコンバートをかけました。 すると、 【旧ソース】 Dim sPath As String * 260 【コンバートソース】 Dim sPath As New VB6.FixedLengthString(260) となりました。 そこでASP.NETのお作法にならい、 Dim sPath As VBFixedStringAttribute = New VBFixedStringAttribute(260) と宣言したのですが、この変数での取得・設定方法がわかりません。 String同様に扱うことはできないのでしょうか。 概念が違うのだとしたらどう違い、何を取得・設定すればよいのでしょうか。 以上、ご教示いただけると助かります。

  • 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) なんだか鶏と卵のような感じになってしまいます。 文字列から文字コードを判別する方法はないでしょうか? よろしくお願いします。

  • VBで全角文字をバイト参照したい

    こんばんは またまた壁にぶちあたっています! VBでテキストから参照した全角文字をMidB関数等で部分参照し、 それぞれ一バイトずつのエリアに設定したいのですが、取得した値を VB(Windows?)が認識出来ない為か「?」となります。 内容を壊さずに取得する方法があれば教えて頂きたいのですがm(__)m サンプル Dim strBuff1 As String * 1 Dim strBuff2 As String * 1 txtInput = "西" strBuff1 = LeftB(StrConv(txtInput,FromUnicode),1) strBuff2 = RightB(StrConv(txtInput,FromUnicode),1) 以上のコーディングで「strBuff1」、「strBuff2」にそれぞれ「?」が 設定されます

  • 文字列操作

    VB6です。 質問させてください。 ↓例、Buffer変数に取得データが入ります 最終的に下記の3つの値を取得したいです。 Value(1) = "ABC" Value(2) = "DEFGHIJKL" Value(3) = "MN" 少し長いと思います。スマートな方法はございますか? ----- Dim Buffer As String Dim Temp1 As String Dim Temp2 As String Dim Value() As String Buffer = "?ABC-?DEFGHIJKLMN-" '取得データ '前後?-を除きます。 Temp1 = Right(Temp1, Len(Buffer)-1) Temp1 = Left(Temp1, Len(Temp1)-1) 'この時点で、4文字目、5文字目の-?を除きます Temp1 = Left(Temp1, 3) Temp2 = Right(Temp1, 11) '"ABCDEFGHIJKLMN"を取得 Value = Temp1 & Temp2 '"ABC"を取得 Value(1) = Left(Value, 3) '"DEFGHIJKL"を取得 Value(2) = Right(Value(2), Len(Value)-3) Value(2) = Left(Value(2), Len(Value)-2) '"MN"を取得 Value(3) = Right(Value, 2)

  • データ上のサイズを取得したい

    実際のサイズではなくデータ上のサイズを取得するためにはどう変更したらいいですか。 Option Explicit 'シートの名前を変更する Private Sub workbook_open() Dim fso As Object Dim filePath As String Dim fileSize As Double ' ファイルパスを取得 filePath = ThisWorkbook.FullName ' ファイルシステムオブジェクトを作成 Set fso = CreateObject("Scripting.FileSystemObject") ' ファイルサイズを取得(単位はバイト) fileSize = fso.GetFile(filePath).Size ' ファイルサイズをKBに変換(切り上げ) fileSize = Application.WorksheetFunction.RoundUp(fileSize / 1024, 0) ' ワークシートの名前を変更 Dim NewSheetName As String NewSheetName = fileSize & "KB" Sheets(1).Name = NewSheetName End Sub

  • .NET Stringからバイト数を取得する。

    初歩的な質問で申し訳ありません。 Stringから桁数ではなくバイト数を 取得する方法を教えてください。 Dim a As String a = "00あ" とあった場合、 aから4という結果がほしいです。 よろしくお願いします。

  • 文字列の分解・格納

    お世話になります。 文字列の分解についてお聞きします。 環境はVB.NET2008です。 Private Sub Main(ByVal CmdArgs() As String) Dim cmds() As String cmds = System.Environment.GetCommandLineArgs() End Sub コマンドライン引数で以下のように文字列を取得しています。 ("起動exe", "/KEY=○○○/ テーブル名=△△△") この文字列を元に、 変数Aに○○○を変数Bに△△△を代入したいのですが、どうやるのでしょうか? ご教示願います。

  • VB2005 で NetworkStream で取得したデータのバイト数の取得方法について

    VB2005 の初心者です。 System.Net.Sockets を利用して、Windows端末のAシステムとLinux端末のBシステムの通信部分のサービスを開発しています。 その際、NetworkStream で受信したデータのバイト数を取得したいのですが、やり方が分かりません。 データを取得している部分のソースは下記です。 10000バイトずつ取得していますが、 最後、10000バイトに満たない場合、取得したデータのバイト数が知りたいです。 Dim LNetworkStream As NetworkStream Dim LbEndFlg  As Boolean Dim LucData(10000) As Byte Do While LbEndFlg LNetworkStream = objClient.GetStream() Redim LucData(10000) LsLen = LNetworkStream.Read(LucData, 0, LucData.Length)  LbEndFlg = FindEndOfClaim(LucData) LstrText = System.Text.Encoding.UTF8.GetString(LucData, 0, LsLen) MstrXML = MstrXML & LstrText Loop NetworkStream には、SetLength というメソッドがありますが、 これは必ず例外を発生させてしまうので、 例外を発生させずにバイト数を取得したいです。 何かヒントになることでも良いので、 皆様の知恵をお借りできれば幸いです。 よろしくお願い致します。

  • VB6で固定長の文字列の長さを変更するには

    あるライブラリを呼ぼうとしているのですが、 dim str as string * 100 dim lngLen as long lngLen = dlllib str と実行すると問題ないのですが、上記の100というのは、 固定値に出来ません。この値は、 lngLen = dlllib 0 で取得できる、lngLenの値にしたいです。 その場合は、どうすればよいでしょうか? 久しぶりにVB6をやって困っています。 よろしくお願いします。

専門家に質問してみよう