![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
C#でのキャスト(?)で困ってます。
うまく説明できないので、下にCっぽい処理を書きます。
struct _hoge{
int i;
char c[4];
double d;
};
void f(){
BYTE data[16];
stream.read(data); // 何かから16Byte読み込み
_hoge *st = (_hoge*)data; // ←ここ
TRACE("%d,%c,%f",data->i,data->c[0],data->d);
}
//(結構いいかげんです)
上記処理のように、BYTEの配列で取得したデータを「struct _hoge」の型にキャストしてそれぞれの要素を取り出す、ということをC#で実現したいのですがMSDNやWebを結構探したのですがわかりませんでした。(何で検索していいのかがわかりませんでした・・・)
実現方法(もしくは検索キーワード)がわかる方、教えてください。
No.2ベストアンサー
- 回答日時:
No.1
- 回答日時:
そういう処理はシリアライズといいます。
適当なクラスや構造体は[Serializable]と宣言することでシリアライズできるようになります。
以下サンプル
//-------------------------------------------------------------------
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
struct Hoge {
public int i;
public char[] c;
public double d;
override public string ToString(){
return String.Format("i:{0}\nc:{1}{2}{3}{4}\nd:{5}",
this.i,
this.c[0],this.c[1],this.c[2],this.c[3],
this.d );
}
};
class Sample {
public static void Main(){
Hoge aHoge;
aHoge.i=10;
aHoge.c= new char[4];
aHoge.c[0]='T';
aHoge.c[1]='E';
aHoge.c[2]='S';
aHoge.c[3]='T';
aHoge.d=3.1415926;
// 保存
FileStream file = File.Open("Hoge.DAT", FileMode.Create);
BinaryFormatter aBinFormat = new BinaryFormatter();
aBinFormat.Serialize(file, aHoge);
file.Close();
aHoge = new Hoge();//中身を別のオブジェクトにする
// 読込
if(File.Exists("Hoge.DAT")){
file = File.Open("Hoge.DAT",FileMode.Open);
aBinFormat = new BinaryFormatter();
aHoge = (Hoge)aBinFormat.Deserialize(file);
file.Close();
}
Console.Write(aHoge);
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# アセンブラ指令 3 2023/06/17 14:47
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Excel(エクセル) 格納したデータを配列のように扱う方法はありますか? 8 2023/06/05 08:53
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPからCSVをアップロード後、m...
-
CSVデータの行数カウントをした...
-
別ファイルの構造体の値を読み...
-
CSVファイルの最終行のデー...
-
csvの内容を行単位で削除したい
-
PHP5でCSVの指定行データだけを...
-
配列を回すとき、最後の要素だ...
-
配列の添え字が小数だとどうなる?
-
配列の初期化
-
順位を付ける時のスコアの重複...
-
file_existsでファイル名の部分...
-
foreachのなかで次のキーを参照...
-
チェックボックス複数選択 mys...
-
漢字のソートについて
-
配列の要素(value)に、変数を...
-
マッチング処理(1:N)
-
String だと「 ByRef引数の型が...
-
verilogで、配列の一部をタスク...
-
phpで、連想配列を普通の配列に...
-
配列から順位を算出したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別ファイルの構造体の値を読み...
-
Resource id #3 と表示されま...
-
stdClass Objectを連想配列のよ...
-
CSVデータの行数カウントをした...
-
ヒアドキュメントの中のfor文
-
複数行のデータのPOST処理に関して
-
C言語でCSVファイルの行数を読...
-
While文を使って配列の中身を全...
-
行数が30万件ほどあるCSVから、...
-
CSVファイルの最終行のデー...
-
csvの内容を行単位で削除したい
-
バイナリファイルの内容を、そ...
-
doxygenを使用する環境について
-
PHPで、CSVファイルを、指定し...
-
FortranのOPEN文
-
csvファイルを読み込み→上書き...
-
PHPでCSVの一部の行を編集したい
-
ラジオボタンのチェックの付け方。
-
Ethnaでのsection使用法
-
CSVデータを正規表現で抜き出せ...
おすすめ情報