Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。306件1DateTimeをシリアライズするためのメソッドDateTime.ToBinary()がありますが、DateTime型は日付が含まれるため、日付が必要ない場合に無駄になってしまいます。(Hour以下のTicksの最大値は863,999,999,999なので5バイトで表現可能。少なくとも今の私の仕事では8バイトと5バイトの差は大きいです)時刻のみをシリアライズできるようなライブラリが見当たらなかったため、とりあえず作ってみたものが以下になります。票2時刻のデータがかなりの割合を占めるSQLiteのファイルサイズを抑えるためこのコメントで質問内容がほとんど別物になってしまいました。value.と説明されています。DateTime.TimeOfDay.Ticksを格納するだけで値に応じた適切なサイズで格納されます。(と言っても大半は6バイトになりそうですが。)こういったことができるライブラリはありますか?直接的にはありません。ある人は5バイトがよく、またある人は6バイト、別の人は精度を減らして4バイト、など環境により求められるものは様々です。結局は必要な人が必要なものを作るのが一番です。endianに依存しています。endian環境で先頭5バイトを参照しても意味がありません。BitConverterで8バイト配列を作成してから改めて5バイト配列を作り直すのは非効率です。5バイトですし直接操作した方が早く、速いはずです。その場合は5バイト配列を何度も作ったり、それを結合したりする行為は効率が悪いので、配列とオフセット値でアクセス可能なオーバーロードも用意した方がいいでしょう。個の銅バッジありがとうございます。時刻のデータがかなりの割合を占めるSQLiteのファイルサイズを抑えるために質問させていただきました。これを使わせていただくことになると思います。|0ストリームに書き込む事を想定しつつ、元のシグネチャも維持するとこんな感じでしょうか。うち、時刻のみをストリームに書き出します。うち、時刻のみをストリームに書き出します。オブジェクトを再構築します。等で永続化する際に省スペース化を図りたいという事であれば、挿入頻度にも依りますが、極端に効率が悪くない限りは何でもいいと思います。いう意味では、質問者さんのコードそのままでも仕様通りに動くのなら問題ないと思います。よって、これよりマシな方法はありますか?この質問は、何を改善したいかによるんですよね。シナリオをより具体化してもらえると、改善案を提案しやすいと思います。等で永続化する際に省スペース化を図りたいという事」でした。下手な質問で申し訳ございません。12:27いえ、自分の仕事にも活かせそうな内容でしたので、私自身にも実りがありました。利用する事もあるかも知れませんね。書いてみましたので、機会があれば見てみてください。|0サイズを削除したいというのであれば、バイトの配列を利用することは全く無意味です。Frameworkの場合、12byte(96bit)となります。従って、それに実データの5byteを足すと、最低でも合計17byte(136bit)になってしまい元の64bitの2倍以上のサイズが必要となるでしょう。従って、提示された運用は64bit以上のサイズを取ってしまうので、速度的な面を見てもまたサイズ的な面を見ても64bitのまま運用するのが最適かと思います。逆に時刻のみでよく、なおかつ精度を落としてもかまわないと言うことであれば32bitに切り詰めてしまうことで、シュリンクすることは可能だと想います。32bitにするなら、精度は0.1ms単位となり、16bitの場合は10秒単位当たりが適当かと想います。(キリの良い形とするなら)また、配列が生きてくるパターンとしては、複数の時刻データを単一の配列で運用するのなら、オーバーヘッドは償却可能だとは思いますが、運用的な制約が大きすぎて余りお勧めできるモノでは無いと考えます。個の銅バッジありがとうございます。質問の件はメモリ上の話ではなく、SQLiteのDBファイルサイズを抑えるための話でした。仰られたことを認識していたわけではなかったため、非常に勉強になりました。12:19精度はmysqlのdatetimeをそのまま格納する必要があるため、32bitにはできませんでしたがこれも非常に参考になりました。12:3817byteの間違いです。ご指摘有り難うございます。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。