• 締切済み

C言語で、テキストファイルに下記の構造体データのバッファを保存し、

C言語で、テキストファイルに下記の構造体データのバッファを保存し、 PHPで構造体データの中身を取ることは可能でしょうか。 struct ParamData{ signed short paramA; signed short paramB; signed short paramC; signed short paramD; signed short paramE; signed short paramF; signed short paramG; }; C言語では、 ParamData* params = (ParamData*)readData; で取得できたのですが・・・。 宜しくお願いします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

freadで読みます。整数値の配列にするなら、unpack関数を使います。 Cのshortが2バイトだとして、 $handle = fopen($filename, "r"); $data = fread($handle, 14); if(strlen($data)!=14){  エラーの時の処理 } $data_array = unpack("s*",$data); ・・・・・・ fclose($handle);

g2_destiny
質問者

お礼

ご解答ありがとうございます。 上記の通りやってみたのですが、あまりうまく動いてくれません 具体的に何がしたいかを申しますと、 C++で組んだゲームにランキング情報を載せたく、 カテゴリID(int型)\tスコア(int型)\tユーザー名(short配列・base64エンコード済み)\n カテゴリID(int型)\tスコア(int型)\tユーザー名(short配列・base64エンコード済み)\n カテゴリID(int型)\tスコア(int型)\tユーザー名(short配列・base64エンコード済み)\n ・・・・ ・・・・ ・・・・ というデータを出力するaspファイルがあり(\t はタブ)、 そのデータをPHPで個別に取得し、出力できるよう抽出したいということです。 現状試しているPHPのコードですが、 <?php // 文字配列 $moji = array( "A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z" ); // aspファイルからデータを抽出 $openfile = file_get_contents( "aspファイルのパス"); $csv_gyo = split("\n", $openfile ); foreach( $csv_gyo as $kurikaeshi ) { $data = split( "\t", $kurikaeshi ); print "カテゴリID = ".$data[ 0 ]."<br>"; print "スコア = ".$data[ 1 ]."<br>"; print "ユーザー名 = "; // デコード $userdata = base64_decode( $data[ 2 ] ); // short型で配列化 $data_array = unpack("s*",$userdata ); $arrayMax = count( $data_array ); for( $i = 0 ; $i < $arrayMax ; $i++ ){ print $moji[ $data_array[ $i ] ]; } print "<br>"; } ?> このような感じです。 何かアドバイスなどありますでしょうか。 尚、C++のソース、aspファイルの中身は変えられませんので、 PHPのみの変更でお願いいたします。

関連するQ&A