dポイントプレゼントキャンペーン実施中!

PLC(Melsec-Q)から取出※しセル展開した文字コードの変換に関し、全て半角であれば特に問題無く展開できていますが、一部全角コード混じりの場合があり、その過程で理解できない部分が有ります。
※TAKEBISHI DeviceXPlorer OPC Server

1word:13136→DEC2HEX(3350)→RIGHT(50) →CHR(80) →P (OK)
                →LEFT(33) →CHR(33) →3 (OK)
2word:-31946→FFFFFF8336 →RIGHT(36) →CHR(36) →6 (OK)
【83】 →┐ 
3word:13747 →35B3 →RIGHT【B3】 →┴→ShiftJIS(Ox83b3)→【Φ】(ok)
→LEFT(35) →CHR(35) →5 (OK)

答えとしての【Φ】への変換はでき、目的の文字列『P36Φ5』は取れましたが・・・
●なんで2word目の『FFFFFF』が入るのか?? 理解できないでいます。
理解深めたく質問させて頂きました、よろしくお願いします。

質問者からの補足コメント

  • すみません、当方はVBA世界のみでDWORD/QWORDは・・・・
    セル値  DEC2HEX(エクセル関数)
    16 10
    15 F
    : :
    2 2
    1 1
    0 0
    -1 FF・・・F(10個)
    -2    FF・・・FE
    -3 FF・・・FD の(-)FF・・・は確認できました。
    今回は半角が奇数文字で P36+全角Φで (P36)+(6[36]+Φ[上位83])→FFFFFF8336 になり
    半角が偶数でP3+全角Φ半角6 となると(P3)+(Φ[83B3])→ 83B3 になりそうですが・・・
    「お門違い」ですが教えてください。
    ※Replace(tgt,"F--f","")で逃げようかと・・

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/12/12 12:08

A 回答 (2件)

では、



=DEC2HEX(-31946,4)

という感じの桁数指定を付ければ解決しますよね。指定がないと10桁で返ってくるから、今回みたいに欲しくないところまで返されてしまう。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2017/12/12 15:32

もしかして、16進変換をDWORD(ダブルワード)でやっただけじゃないですか?ワードだったら16進数4桁なので、8336になりますから。



-31946は負数なので最上位ビットが立ちますが、数そのものの表現には必要ない余分なビットもすべて1になるので、結果としてFの羅列が追加されます。こんな感じです。

WORD: 8336 ←16bit(PLCはこれ)
DWORD: FFFF 8336 ←32bit
QWORD: FFFF FFFF FFFF 8336 ←64bit
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!