【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.19624

バイト→キロバイトの変換
投稿者---Kei(2005/01/28 13:15:25)


連続投稿申し訳ないです。

GetFileSizeでファイルサイズを取得したのですが、
プログラム上では10バイトと表示され
ファイルのプロパティも10バイトと表示されているので
取得は成功出来ていると思うのですが、
GetFileSizeで取得した値をKB単位にしたいとき
1キロバイト=1024バイトと考えると
/1024をすればキロバイトで表示出来ると思ったのですが、
単純に/1024をやってしまうと0.00976562と表示されてしまいます。
ファイルプロパティだと4.00KB(4.096バイト)と表示されています。

ファイルプロパティみたいな表示をするのにはまた別の関数を使わないとダメなのでしょうか?

それとも私が勘違いしているのでしょうか???



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:バイト→キロバイトの変換 19625 YuO 2005/01/28 13:21:16


No.19625

Re:バイト→キロバイトの変換
投稿者---YuO(2005/01/28 13:21:16)


>GetFileSizeで取得した値をKB単位にしたいとき
>1キロバイト=1024バイトと考えると
>/1024をすればキロバイトで表示出来ると思ったのですが、
>単純に/1024をやってしまうと0.00976562と表示されてしまいます。

1024で割ると0になると思いますが……。


>ファイルプロパティだと4.00KB(4.096バイト)と表示されています。

何の話ですか?
ディスク上のサイズであれば,また別の話になりますが。



この投稿にコメントする

削除パスワード

No.19627

Re:バイト→キロバイトの変換
投稿者---Kei(2005/01/28 13:33:31)


>1024で割ると0になると思いますが……。
一応過去ログを真似て取得してみたのですが・・・。
ソースはこれです。
int file_info(char *filepath, char *filename)
{
    double size;
    DWORD FileSizeLow, FileSizeHigh;
    hFile =  CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    FileSizeLow = GetFileSize(hFile, &FileSizeHigh);
    size = FileSizeHigh *  4294967296.0 + FileSizeLow;

    printf("ファイルサイズ:%.16gKB\n", size / 1024);
}


>何の話ですか?
>ディスク上のサイズであれば,また別の話になりますが。

つまり、プログラム上のサイズとは一致しなくては良いと言うことですか?





この投稿にコメントする

削除パスワード

No.19633

Re:バイト→キロバイトの変換
投稿者---REE(2005/01/28 13:43:42)


>>何の話ですか?
>>ディスク上のサイズであれば,また別の話になりますが。
>
>つまり、プログラム上のサイズとは一致しなくては良いと言うことですか?

ディスク上のサイズとファイルサイズは別のものです。
別のものですから、一致することもあれば、異なることもありますし、
別のものだからこそ、ファイルのプロパティで両方表示されるわけです。

一般的には ディスク上のサイズ≧ファイルサイズ となります。



この投稿にコメントする

削除パスワード

No.19634

Re:バイト→キロバイトの変換
投稿者---Kei(2005/01/28 13:45:21)


>ディスク上のサイズとファイルサイズは別のものです。
>別のものですから、一致することもあれば、異なることもありますし、
>別のものだからこそ、ファイルのプロパティで両方表示されるわけです。
>
>一般的には ディスク上のサイズ≧ファイルサイズ となります。

なるほど、ありがとうございます。
ずっと疑問に思っていたことが一つ解けました。



この投稿にコメントする

削除パスワード

No.19636

Re:バイト→キロバイトの変換
投稿者---YuO(2005/01/28 13:54:43)


>>1024で割ると0になると思いますが……。
>一応過去ログを真似て取得してみたのですが・・・。
>ソースはこれです。

なるほど,整数で計算せずに浮動小数点数を使ったのですね。

ULONGLONGとInt64ShrlMod32を使えば整数で計算できます。
文字列化にはFormatMessageが使えます。


clやBCCであれば,直接64bit演算ができますし,出力も出来ますから,
これらを使った方が恐らく楽でしょう。



この投稿にコメントする

削除パスワード

No.19639

Re:バイト→キロバイトの変換
投稿者---Kei(2005/01/28 14:35:54)


>なるほど,整数で計算せずに浮動小数点数を使ったのですね。
>
>ULONGLONGとInt64ShrlMod32を使えば整数で計算できます。
>文字列化にはFormatMessageが使えます。
>
>
>clやBCCであれば,直接64bit演算ができますし,出力も出来ますから,
>これらを使った方が恐らく楽でしょう。

また聞いた事のない単語が・・・(汗
色々調べってやってみます。


ありがとうございました。




この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧