警告「異なるオブジェクトポインタ型へキャストしています。」を解消するには？


**聞きたいこと**  
掲題の警告を動作に支障なく解消したい

**問題のソースコード**

[code]

    unsigned char char_array1[8] = {0};
    unsigned char char_array2[8] = {0};
    unsigned long long_val;
    
    *(unsigned long*)char_array1 = long_val & *(unsigned long*)char_array2
    
[/code]

**説明**  
上記のソースはビルドは問題なく通っていますが、QACをかけたところ掲題の警告が出ました。  
（最後の1行のみ重要だと思うので宣言部に関しては割愛しております。）  
こちらを、修正前後で動作に支障なく警告を解消したいのですが良い方法はないでしょうか？  
ご教授のほどよろしくお願いいたします。




どういう目的でその処理が必要なのかちょっと場面の想像がつかないのですが、昔制御系のプログラムでフラグを扱ったりする際に、共用体を使っていたのを思い出しました。外していたらすみません。

共用体を使って書くと、

[code]

    typedef union {
        unsigned long long_val;
        unsigned char char_array[8];
    } MYDATA;
    :
    MYDATA data1 = { 0 };
    MYDATA data2 = { 0 };
    
    unsigned long long_val = 0;
    :
    (なんかの処理)
    :
    data1.long_val = long_val & data2.long_val;
    
[/code]

こんな感じです。QACかけるとどうなるかはちょっとわかりませんが、キャストがない分うまくいくのではないかと思います。

