2017-11-15 21 views
0

このタスクは、UNIXエポックからのミリ秒数を表すリトルエンディアンバイトをネットワークに送信することです--- 32ビットシステムを使用する。32ビットシステムで48ビットの数値を生成する方法

数字1510747673476は、現在の日付(2017年11月15日)を表します。 32ビットシステムでは、システムはこの数を考えることはできません。また、UNIXエポック以来、ミリ秒のソースもありません。しかし、それは秒数のソースを持っています。 milisecondsが常にゼロである48ビットの数値を生成することは許容されます。

説明y = 1510747673は、現在の日付のUNIXエポックからの秒数です。代わりに1510747673 * 10^3をフォーマットする方法はありますか?私は1510747673の数字のバイトを取得し、1510747673 * 10^3のリトルエンディアンバイトを構成する必要がある他の2バイトを何とか発見しますか?それが問題です。

お気軽にご質問ください。目的は、現在の日付の6バイトをミリ秒単位で配信することです。受信側は、それをリトルエンディアンで48ビットサイズで想定しています。

+0

ここでどのようなプログラミング言語について話していますか? –

+0

私たちはLuaについて話しています。それは関係がありますか? – user8944998

+0

"32ビット"は単なる単語サイズです。これはコンピュータの制限ではありません。 – stark

答えて

0

32ビットのデータ型に適合する秒数yがあります。リトルエンディアンでy + 10^3をフォーマットしたいとします。したがって、10^3を表す2つのリトルエンディアンバイトが必要です。これらは0xe8と0x03です。

したがって、32ビット整数をフォーマットし、yを表す4バイトを取得するライブラリを用意してください。これらは、48ビット整数の上位4バイトです。それらをb3、b4、b5、b6と呼んでください。望ましいリトルエンディアンの答えは、0xe8、0x03、b3、b4、b5、b6です。

+0

これはまったく正しくありません。私は別の方法を見つけようとしますが、これは全く間違っています。可能であれば、この回答を完全に削除してください。 –

関連する問題