[英]Convert int to byte as HEX in C#
我需要通過串行向設備發送十六進制字符串,我現在這樣做:
byte[] c = new byte[3];
c[0] = 0x57;
c[1] = 0x30;
ComPort.Write(c,0,c.Length );
現在我需要將 30 之類的 int 值轉換為c[1] = 0x30
或 34 的 int 值給出c[1] = 0x34
。 我希望你明白我的意思。
那么我該如何管理呢?
這種格式稱為二進制編碼的十進制 。 對於兩位數,將整數除以十並乘以十六,然后將除法的余數加回十:
int num = 45;
int bcdNum = 16*(num/10)+(num%10);
另一種方法是
c[1] = Convert.ToByte(num.ToString(), 16);
假設int Data = 2821; 是通過COM端口發送的:
c[0]= Convert.ToByte(data & 0x00FF);
c[0]= Convert.ToByte(data & 0xFF00) >> 8);
ComPort.Write(c,0,c.Length );
int num = 1366;
string bcdNum = num.ToString("X");
if (bcdNum.Length < 2)
bcdNum = "0" + bcdNum;
byte[] bytes_str=Enumerable.Range(0, bcdNum.Length).Where(x => x % 2 == 0).Select(x => Convert.ToByte(bcdNum.Substring(x, 2), 16)).ToArray();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.