none
byte[] 內字串的組裝 RRS feed

  • 問題

  • 我目前需要透過rs232傳送指令到機器上

    指令格式如下

    02 77 [ID] FF  (ID MAX 12 byte )

    例如ID = JOHN

    serialPort1.Write(new byte[] { 0x02, 0x77, 0x4A, 0x4F, 0x48, 0x4E, 0xFF},0,7)

    ID是固定的可以用這寫法

    但我想把它改成參數式的

    當我ID = Hello時

    我嘗試先用

     byte[] ASCIIbytes = Encoding.ASCII.GetBytes("Hello");

    轉換但是轉出來的是ASCII 10進制,指令需要16進制

    我又用foreach方式再轉16進制

     foreach (byte ComValue in ASCIIbytes)
                {
                    VS.Append(string.Format("{0:X}", int.Parse(ComValue.ToString())));
                }

    可是接下來我就不知道怎麼組出指令格式了

    還請高手指教

    2018年9月12日 上午 10:02

解答

  • 你用的是 byte 陣列,不用轉 16 進制,進制轉換是給人看的,不是給電腦看的,0xFF | 255 都是 255 ,反而正式來說,0xFF 那叫字串,而不是 byte 。

    如果你不會組,簡單一點用 MemoryStream 的 WriteByte / Write 寫入你的位元組,最後再用 ToArray 轉回你要輸出的 byte[] 即可。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 dodolon 2018年9月13日 上午 11:08
    2018年9月12日 下午 02:58