- PR -

C#でのパック形式データ作成

1
投稿者投稿内容
MILD
会議室デビュー日: 2005/01/28
投稿数: 12
投稿日時: 2005-09-02 11:04
いつも参考にさせていただいています。

COBOLでよく使用されるようですが、1バイトの中に上位4bitと下位4bitに分けて
データを作成するパック形式でデータを作成しています。

もちろん、テキストエディタで開くとパック形式で書かれているところは
文字化けして見えます。
バイナリエディタで開くとパック形式で書かれている部分には、意図した
データが書かれているようにしなければなりません。

[テキストエディタで開いた場合]
1234#Ec1234
↑↑(パック形式の場所)
[バイナリエディタで開いた場合]
31 32 33 34 01 23 45 63 31 32 33 34
↑↑↑↑↑↑(パック形式の場所)

いろいろ調べては見たもののC#で実現可能なのか否かも
分からない状況です。
バイナリで見たときに「01 23 45 63」となるようにファイルに
書き込むことは可能なのでしょうか?
もし可能であれば手法をご教示していただきたく存じます。

パック形式のデータに関する知識が乏しいためネットで調べたの
ですが、参考になるものはありませんでした。
が、念のため下記に記載しておきます。
http://www.ffortune.net/comp/develop/data/kazu.htm
http://www.infonet.co.jp/ueyama/ip/glossary/chr_code.html

よろしくお願いいたします。

MILD
会議室デビュー日: 2005/01/28
投稿数: 12
投稿日時: 2005-09-02 11:08
一部、見難い箇所がありましたので修正します。

-----------------------------------------
[テキストエディタで開いた場合]
#Ec1234
↑↑(パック形式の場所)
[バイナリエディタで開いた場合]
01 23 45 63 31 32 33 34
↑↑↑↑↑↑(パック形式の場所)
-----------------------------------------

以上です。
壱丸3
常連さん
会議室デビュー日: 2004/09/13
投稿数: 34
投稿日時: 2005-09-02 11:22
過去ログにこんなんありました。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=16384&forum=7&3
kanai
ベテラン
会議室デビュー日: 2004/09/13
投稿数: 98
投稿日時: 2005-09-02 12:24
引用:

バイナリで見たときに「01 23 45 63」となるようにファイルに
書き込むことは可能なのでしょうか?



IO.BinaryWriterを使用すれば可能です。
VBですがこんな感じです。

コード:

Dim bytes As Byte() = {&H1, &H23, &H45, &H63}
Dim fs As New IO.FileStream("C:\Test.txt", IO.FileMode.Create)
Dim bw As New IO.BinaryWriter(fs)
bw.Write(bytes)
bw.Close()
fs.Close()



こういうことではなく、パック形式を含むデータをいかに解釈するか、
ということでしょうか?
(私もパック形式には詳しくないのでわかりません)


[ メッセージ編集済み 編集者: kanai 編集日時 2005-09-02 12:28 ]
MILD
会議室デビュー日: 2005/01/28
投稿数: 12
投稿日時: 2005-09-02 15:11
皆さん、返信ありがとうございます。

参考に試して見ます。

kanaiさんのようにすれば、出来そうですがパック形式にする部分が
動的に変わってくるため、一ひねりいりそうです。。。
壱丸3
常連さん
会議室デビュー日: 2004/09/13
投稿数: 34
投稿日時: 2005-09-02 15:55
符号値とか桁数を解決したhex文字列を
2文字ずつ区切ってbyteに解析して
その結果をコレクションに追加してって
全桁解析おわったらbyte配列にして
あとはkanaiさんが提示されたような感じで
ファイルに書き込めますね。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-09-02 16:33
検索語
.NET packed decimal
.NET COBOL COMP
など、英語検索エンジンで当たるといいかも

Data translation between C#, XML, and COBOL mainframe data types
§ Supports various copybook data types such as PIC, CMP2, CMP3 and etc.
Mainframe Copybook to CSharp (C#)
http://www.dnzone.com/showDetail.asp?TypeId=23&NewsId=1050
ここは要登録ですが
1

スキルアップ/キャリアアップ(JOB@IT)