問題タブ [nibble]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
1006 参照

ruby - nginx uuid を 16 進数から Base64 に変換する: バイトオーダーはどのように関係していますか?

Nginx は、クライアントの識別に適した uuid を生成するように構成できます。新しいクライアントからリクエストを受信すると、リクエストを上流のオリジン サーバーに転送する前に、2 つの形式で uuid を追加します。

  • Base64 の uuid を持つ Cookie (例CgIGR1ZfUkeEXQ2YAwMZAg==)
  • 16 進数の uuid を含むヘッダー (例: 4706020A47525F56980D5D8402190303)

16 進表現を Base64 に相当するものに変換したいと考えています。私はRubyで実用的なソリューションを持っていますが、基礎となるメカニズム、特にバイトオーダーの切り替えを完全には理解していません:

上位ニブルhex_str(上位 4 ビットが最初) のバイナリ データのシーケンスとして処理し、(ASCII エンコードされた) 文字列表現を生成します。

binary_seq32 ビットのリトル エンディアン符号なし整数の配列にマップします。各 4 文字 (4 バイト = 32 ビット) は整数にマップされます。

data32 ビットのビッグエンディアンの符号なし整数の配列として扱い、(ASCII エンコードされた) 文字列表現を生成します。

network_seqBase64 文字列にエンコードします。

私の大まかな理解は、ビッグ エンディアンがネットワーク通信の標準的なバイト順であるのに対し、ホスト マシンではリトル エンディアンがより一般的であるということです。nginx が、変換するためにバイト オーダーを切り替える必要がある 2 つの形式を提供する理由はわかりません。

.unpack("VVVV")また、との.pack("NNNN")手順がどのように機能するかわかりません。にG\x06\x02\nなる\n\x02\x06Gのはわかりますが、そこにたどり着くまでの手順がわかりません。たとえば、 の最初の 8 桁に注目するとhex_str、なぜ do.pack(H*)と を.unpack("VVVV")生成するのか:

base-10 に直接変換すると、次のようになります。

? 私がこれを尋ねているという事実は、これらすべての変換で正確に何が起こっているのかを明確にする必要があることを示しています:)

0 投票する
1 に答える
246 参照

c - ニブル半桁変換

プログラマーの皆さん、こんにちは。

お願いしたいことがありますが、

大学から 10 進数 (0-9) を 1/2 ビット (ニブル = 0101 など) に変換するタスクがありました。if ステートメントを使用できないという制限があります。

だから私は少し試してみて、ここまで来ました

ここでの問題は、数字を入力するとプログラムがクラッシュすることです。

私は本当に苦労していて、続行する方法や機能させる方法がわかりません

それがどのように機能するかの例や、それを機能させるための良いアドバイスを教えてください。

とても感謝しております

助けと答えを本当にありがとう!

0 投票する
1 に答える
27 参照

converter - 0 ~ 9 までのニブル制限

プログラマーの皆さん、こんにちは。

int main() int n;

これまでにこのコードを作成しました。コードは 10 進数値をニブルに変換します。

それは機能しますが、ifステートメントを使用せずに入力を0〜9に制限する方法について質問があります。それを行う可能性はありますか?現時点では、コードは 0 ~ 15 の 10 進数を使用しています。理解できるように、例を教えてください。または説明してください。

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

0 投票する
2 に答える
861 参照

lua - 浮動小数点値を 16 進数に変換する

Lua での浮動小数点から 16 進への変換に苦労しています。私のアプリケーションは、古い Akai S2000 サンプラーと通信します。サンプラーは、2 バイトのメッセージを 4 つのニブル値にコード化します。ニブルは逆順であるため、最も重要なニブルが最後になります。値の小数部分のバイナリ エンコードを使用する 1 つのパラメーターがあります。2 つの MS ニブルは値の整数部分をエンコードするために使用され、LS ニブルは 2 進分数をエンコードするために使用されます。

このディスカッションhttps://bytes.com/topic/c/answers/219928-how-convert-float-hexに基づいて、特定のパラメーター値からこれらのニブル値を生成する Lua アルゴリズムの実装を開始しました。私はビット計算が得意ではないので、多くのことを間違った方法で行っていると思います。これらの値を計算し、愚かな if/else ハックの多くを回避する簡単な方法があるはずです。

私のコード (下に貼り付けたもの) は正の数に対しては機能しますが、負の分数に対しては非常に困難です。

私のテストでは、期待値を持つテーブルに追加しました。各テーブルは次のように機能します。

つまり、positiveNumbers テーブルの最初のエントリは 0.01 の入力値を表し、その値の期待される出力は 02 00 00 00 を含む 4 バイトの MemoryBlock です (最初の 2 バイトは分数を表し、最後の 2 バイトは整数部分を表します)。

現在、私のアルゴリズムは -0.94 で失敗しており、他の値を壊さずにハックすることはできません。

ビット計算で文字列を作成していて、特に負の値を変換する際に私が犯した初心者の間違いを簡単に確認できる人はいますか? ヘルプやポインタをいただければ幸いです。

ルアコード: