簡體   English   中英

無法轉換為特定格式C#

[英]Trouble converting to a specific format C#

這可能是一個奇怪的問題,但我已經制作了一個與另一個程序通信的程序(另一個程序不是由我制作的)。 我需要將“距離”發送到另一個程序,但是我無法理解程序如何解釋這些距離。

我截獲了一個成功向程序發送距離的設備。 以下是發送距離的示例。 我認為該程序讀取的距離為ushort。 希望我會丟失一些簡單的東西,因為我似乎無法將我的距離轉換為相同的格式。

例如:要發送的距離是74.發送的字節是[0,74]。 這個作為ushort是18944。

我最初的想法是距離轉換為ushort。 然后將ushort的字節發送到程序。 然而,情況似乎並非如此。

這是導致錯誤的Endianness

  • sender: 74 (int16) == [0, 74] - 第一個高位,然后是低位字節
  • 接收器: 74 (int16) == [74, 0] - 第一個低,然后是高字節

這就是收貨人得到的原因

   0 + 74 * 256 == 18944

嘗試檢查Little / Big Endian (即字節的順序 ):

   byte[] data = new byte[] { 0, 74 };

   // If the WorkStation uses Little Endian order, we have to reverse the buffer
   ushort dist = BitConverter.ToUInt16(BitConverter.IsLittleEndian 
       ? data.Reverse().ToArray() 
       : data, 
     0);

   // 74
   Console.WriteLine(dist);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM