2016-05-20 5 views
1

SQLiteにパックド/バイナリ形式の符号なし整数を出力させる方法はありますか?SQLiteはパックされた整数を出力できますか?

私はSQLiteにperl関数 "print pack( 'I、1_234_567_890)"と同等のものを提供したいと思っています。すべての整数(2^32未満)が正確に4バイトを使って出力されますハードウェアのLinuxボックス、ハードウェアとエンディアンによって異なります)

私が探しているものを得るためのprintf書式設定の魔法がありますか?

答えて

2

ビッグエンディアン、32ビット値(l>):

char((N >> 24) & 255, (N >> 16) & 255, (N >> 8) & 255, N & 255) 

リトルエンディアン、32ビット値(l<):

char(N & 255, (N >> 8) & 255, (N >> 16) & 255, (N >> 24) & 255) 
+0

リトルエンディアンのバージョンは私のために働きました。ありがとうございました! これは他の読者には、もっと最近のバージョンのSQLiteでのみ動作するように見えるということです。 Ubuntu 14.04(Trusty)リポジトリ(バージョン3.8.2 2013-12-06 14:53:30)のデフォルトのバージョンのSQLiteは、16進リテラルをサポートしていません。 Ubuntu 16.04(Xenial)リポジトリ(バージョン3.11.0 2016-02-15 17:29:24)のデフォルトのバージョンのSQLiteは、16進リテラルをサポートしています – TomWitt2

+0

両方とも動作します。言及されているように、彼らは単に異なることをします。 /// 0xFFは255です。答えを更新しました。 – ikegami

関連する問題