
vb6です。
文字データをコード変換して送信したいのですが、
送信関数は既にあり、いじれません。こいつは送信データをstringで受け取ります。しかし不思議なことに送信データサイズの指定もあります。多分stringをchar配列のようなイメージで使っているんだと思います。
文字コード変換処理は変換前データをstringで受け取ります。
コード変換はSJISをEBCDIC派生の独自コードに変換するので
一旦byte配列に落として1バイトずつ表に従って変換します。
変換したら送信関数に渡したいのですがなにせstringでしか受け取ってくれません。
中身の解釈をせずmemcpy的なことをしたいと調べたらダイレクトキャストという方法を
見つけたのですがよくわかりません。
誰か教えてもらえませんでしょうか?
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
GetEncodingが、System.Text名前空間だったので、
System.Text 名前空間から、エンコードなしのものが無いか探して
StringBuilder クラスを見つけました。
その中のメソッドにStringBuilder.Append(Byte)メソッドがあったのでこれで出来ないかと?
以下、出来る保証はありませんが・・・。
Dim bytes() As Byte = ' 変換前データを一旦byte配列に落とす
Dim sb As New System.Text.StringBuilder()
For Each value In bytes
' valueをEBCDIC派生の独自コードに変換する
sb.Append(value)
Next
Dim str As String = sb.ToString();
No.3
- 回答日時:
SJIS指定ではなくて、EBCDIC指定ではないですか?
派生の独自コードということですので、上手くいくかわかりませんが……
stringもgetencodingも、というかシステムそのものがebcdicには非対応じゃないですか?getencodingの引数セットにebcdicってあります?
No.2
- 回答日時:
ありがとうございます。
getencodingだとbyte配列の中身のデータを例えばShiftJISと指定したらShiftJISであるものと思い込んで処理するので、今回の様な特殊コードはShiftJIS表にないからと言って変な値に書き換えられてしまうんです。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VB6で配列を文字列に変換する方法?
Visual Basic(VBA)
-
byte型をstring型として扱うには
Visual Basic(VBA)
-
VB6.0でのバイナリデータの扱いについて
Visual Basic(VBA)
-
-
4
16進数の変換処理
Visual Basic(VBA)
-
5
Visual Basic でのコードをASCII変換、16進変換したものを元に戻す方法を教えてください
Visual Basic(VBA)
-
6
rs232cでの受信データ(mscomm)の受信方法VB6
Visual Basic(VBA)
-
7
VBで構造体の配列を関数に渡す方法?
Visual Basic(VBA)
-
8
[VB.net] StringからByte配列への変換
Visual Basic(VBA)
-
9
VB6 配列を初期化したい
Visual Basic(VBA)
-
10
VB.NETで16進数が正しいかどうかの判定方法を教えて
Visual Basic(VBA)
-
11
VB6にも「ToString」ってありますか?
Visual Basic(VBA)
-
12
VBA バイナリ―から文字列にする方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
「彡」って文字はなんという文...
-
セル内の文字列が日本語か英語...
-
sedで日本語の置換方法について
-
VS 2008(VB.NET)
-
ふりがなをアルファベット化す...
-
std::stringからLPCWSTR型への変換
-
ExcelVBA実行後に時々落ちる
-
C#でバイナリデータをテキスト...
-
%fと%gについて
-
latin-1 (ISO-8859-1)への変換
-
フォームのコントロールのバッ...
-
JIS → S-JIS コード変換するには
-
byte配列の内容をstringにコピ...
-
cgiのログをcsvとして出力、...
-
Excelマクロにて30分単位の計算...
-
「髙(はしごたか)」を文字コー...
-
RubyでUTF8のコード値を文字に...
-
CString ←→ BSTRの変換について
-
半角全角混在(JIS)をJEF+EBCDI...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
std::stringからLPCWSTR型への変換
-
ふりがなをアルファベット化す...
-
VS 2008(VB.NET)
-
「彡」って文字はなんという文...
-
2バイト文字をJEFからSJISに変...
-
JIS → S-JIS コード変換するには
-
COBOLによる全角・半角混...
-
ExcelVBA実行後に時々落ちる
-
フォームのコントロールのバッ...
-
sedで日本語の置換方法について
-
Symfowareでのデータ型変換につ...
-
数値のパック10進数の変換に...
-
S-JIS → JIS コード変換するには
-
RubyでUTF8のコード値を文字に...
-
英数字を含む文字列(0-9,A-Z)...
-
%fと%gについて
-
CString ←→ BSTRの変換について
-
C#でバイナリデータをテキスト...
おすすめ情報
vb6では単なる代入ができそうですね、
コード変換してる関数はvb.netで作ってて、送信関数はvb6のdllで提供されています。
最悪vb6で代入するためだけのラッパーを作ろうと思います。
もしvb.net側でできる方法あればそちらの方が望ましいので引き続き宜しくお願いします。
試させて頂きました。
stringbuilderに順調に1バイトづつバイナリデータを格納するんですが
最後にtostringしたことろでバイナリ数値イメージのら列をで文字列化したものが出来上がってしまいました。
残念。ご協力ありがとうございました。
vb6での単なる代入もつぶさに検証してみたところやはり中身がなにがしか変換されてしまいました。
やっぱりbyte配列で徹頭徹尾処理しないとダメなのか。。。