2017-05-22 4 views
0

こんにちは、私は私の進データ列に2ビットのメッセージIDを追加する必要がどこ、私はこのプロジェクトではない働いているすべてと私はどのようにあなたの助けが理解されるであろうことを行うには考えている一部進値の後にビットに追加

char *fn = "\x60\x45\xd3\x94\x48\0x7c\0x19\xde\xea\x9a\x3e\x0e\xda\xc4\x9b\x81\x28\xb1\x0b\xff\</sensors>;ct=40;title=Sensor Index,</sensors/temp>;rt=temperature-c;if=sensor,</sensors/light>;rt=light-lux;if=sensor"; 

私は2つのカスタムチップ間

+1

C、C#などのほとんどの言語では、構造体内の小さなビットフィールドを除いて、バイト精度未満の変数を格納して取得することはできません。したがって、変数に「2ビット」を加えることは無意味です。おそらくそれらの2ビットを含むバイトを追加することができます。 –

+0

@LeeDanielCrockerそうですが、それは言語の制限ではなく、基礎となるアーキテクチャの制限です。 – sturcotte06

+0

アーキテクチャに関係なく、ビット長の変数を格納、検索、および一貫して印刷できるプログラミング言語を作成できました。もちろん、アーキテクチャは*どのようにそれらが格納されたかを決定します(フロートのようなものがどのように格納されるかを決めるのと同じです)。 –

答えて

1

後2ビットのメッセージIDを追加する必要があり、あなたは2ビットのデータを送ることができるかもしれないが、現代のコンピュータ上で、それは8ビットで整列する必要があります。したがって、2ビットを送信する必要がある場合でも、バイト全体を送信するには6ビットを埋め込む必要があります。これは、fn文字列にcharを追加することになります。

char *fn = "\x60\x45\xd3\x94\x48\0x7c\0x19\xde\xea\x9a\x3e\x0e\xda\xc4\x9b\x81\x28\xb1\x0b\xff\</sensors>;ct=40;title=Sensor Index,</sensors/temp>;rt=temperature-c;if=sensor,</sensors/light>;rt=light-lux;if=sensor"; 

int msgid = 0b11; 
int fnlen = strlen(fn); 
char fn2[fnlen + 2]; 

strcat(fn2, fn); 
fn2[fnlen] = (char) msgid; 
fn2[fnlen + 1] = '\0'; 
関連する問題