-4

以下を表すことができる16ビットの符号なし整数(uint16_t)を生成したい:

  1. 1、2、3 などのバージョンを表す最初の 2 桁。
  2. 別の番号を表す次の 3 桁は、123、345、071 などです。
  3. そして、番号 T234、T566 などを表す最後の 11 桁。

Objective C を使用してこれを行うにはどうすればよいでしょうか。後でこのデータを解析して、これらのコンポーネントを取得したいと思います。お知らせ下さい。

4

1 に答える 1

5

uint16_t の意味を誤解していると思います。16 桁の 10 進数 (0 から 9,999,999,999,999,999 までの任意の数値) を意味するわけではありません。16ビットで表現できる符号なしの数値を意味します。このような値の範囲は、10 進数で 0 ~ 65535 です。話している数値を本当に保存したい場合は、52ビットが必要です。また、その 52 ビット シーケンスから最初の 2 桁の 10 進数を簡単に抽出することができないため、物事を非常に困難にすることにもなります。数値を 10 進数値として扱い、100 を法として扱う必要があります。ビット 1 から 8 とだけ言うことはできません。

あなたを助けることができるバイナリコード化された10進数と呼ばれるスキームがあります。64 ビット値 (uint64_t) を取り、この値の中でビット 1 ~ 7 がバージョン (127 までの値になる可能性があります)、ビット 8 ~ 17 が 2 番目の数値 ( 1023 までの値)、ビット 18 ~ 63 は 3 番目の数値になる可能性があります (これらの 46 ビットは、70,368,744,177,663 までの数値を格納できます。

これはすべて技術的に可能ですが、実際には自分で物事を難しくすることになります. バージョン、マイナーバージョン、ビルド番号を保存しているようですが、ほとんどの人は小数ではなく文字列を使用してそれを行っています

于 2013-07-23T01:45:04.210 に答える