時間のフォーマットに変換

[戻る]
泰三 2003/02/18(火) 10:35:47
こんにちは

date[0] = 0x20;
date[1] = 0x03;
date[2] = 0x01;
date[3] = 0x01;

time[0] = 0x01;
time[1] = 0x01;
time[2] = 0x01;

と設定された、

char date[4];
char time[3];

を引数にして、
string 2003/01/01 01:01:01
をreturnする関数を作成したいのですが、どなたかヒントだけでも頂けますか?
宜しくお願いします。

NEG(ねぐ) [E-Mail] [HomePage] 2003/02/18(火) 10:39:16
 じゃーヒントだけ、、、
 私ならsprintfを使うかな。

PAI 2003/02/18(火) 10:54:08
0x20 と 0x03 から 2003 を作るのは難しそうだ。

NEG(ねぐ) [E-Mail] [HomePage] 2003/02/18(火) 11:23:33
sprintf(buf,"%02x%02x",date[0],date[1]);

泰三 2003/02/18(火) 11:43:43
#include <stdio.h>
#include <string.h>

void main()
{
    printf("Test\n");

    char date[4];
    char time[3];

    char buff[1024];

    date[0] = 0x20;
    date[1] = 0x03;
    date[2] = 0x01;
    date[3] = 0x01;

    time[0] = 0x01;
    time[1] = 0x01;
    time[2] = 0x01;

    int i;
    i = sprintf(buff,"%02x%02x",date[0],date[1]);
    i += sprintf( buff + i, "/");
    i += sprintf( buff + i, "%02x",date[2]);
    i += sprintf( buff + i, "/");
    i += sprintf( buff + i, "%02x",date[3]);
    i += sprintf( buff + i, " ");
    i += sprintf( buff + i, "%02x",time[0]);
    i += sprintf( buff + i, ":");
    i += sprintf( buff + i, "%02x",time[1]);
    i += sprintf( buff + i, ":");
    i += sprintf( buff + i, "%02x",time[2]);
//    i += sprintf( buff + i, "\0");

    printf("buff = %s\n",buff);

}

こんな感じにしてみたのですが、
何か他に良い方法があったら教えていただけますか?

最後のコメント部はやっぱりいらないですよね?

NEG(ねぐ) [E-Mail] [HomePage] 2003/02/18(火) 11:51:20
 長いのは好きじゃないので、こんな感じかな。(^_^;
sprintf(buff,"%02x%02x/%02x/%02x %02x:%02x:%02x",
    date[0],date[1],date[2],date[3]
    time[0],time[1],time[2]);

 \0は付いてるので、コメント部分は要りません。

NEG(ねぐ) [E-Mail] [HomePage] 2003/02/18(火) 11:52:23
 最後のカンマが抜けてた。(;_;)
>    date[0],date[1],date[2],date[3],

泰三 2003/02/18(火) 11:57:58
[[解決]]
なるほど。
ありがとうございました。

ku 2003/02/18(火) 11:58:57
余計なことではあるけど注意点を

日付が12月31日なら
date[2] = 0x12;
date[3] = 0x31;
となるのかな?

今回のものでは問題ないし不整合は起きないけど、
たとえば1月7日の1週間後を求めて出力しようとしたとき
このままだと少し面倒ではないかな?
date[3] = 0x07;
date[3] += 7;
とすると
date[3]は0x0eとなってしまうので、date[3]が0x14になるように計算しないといけない

NEG(ねぐ) [E-Mail] [HomePage] 2003/02/18(火) 13:20:53
 書かれてないけど、データはBCDで来るのだと私は判断しましたが、、、

... 2003/02/18(火) 14:17:44
http://rararahp.cool.ne.jp/cgi-bin/lng/csharp/csharplng.cgi?
print+200302/03020003.txt
CとC#は別物ですよ。

古いスレッドには追加発言できません。