我有一個接收位元組引數的匯入 C 方法,但根據檔案,我可以向該引數發送一封信,這是 C 和 C# 方法:
int WINAPI Sys_InitType(HID_DEVICE device, BYTE type)
public static extern int Sys_InitType(IntPtr device, byte type);
這導致我在 C# 中出現語法錯誤,如何在該引數中發送字母?
我的代碼(有點隨機):
//CRASHES
byte random = Convert.ToByte("A");
_ = RFIDReader.Sys_SetAntenna(g_hDevice, 0);
int lol = RFIDReader.Sys_InitType(g_hDevice, random);
_ = RFIDReader.Sys_SetAntenna(g_hDevice, 1);
CError.Text = lol.ToString();

uj5u.com熱心網友回復:
Convert.ToByte(string); 根據檔案,沒有做你認為它做的事情
將數字的指定字串表示形式轉換為等效的 8 位無符號整數。
這將起作用byte random = Conver.ToByte("52");,它將回傳byte 52.
看這里:
https://docs.microsoft.com/en-us/dotnet/api/system.convert.tobyte?view=net-6.0#system-convert-tobyte(system-string)
正如評論中已經指出的那樣,您將不得不使用字符而不是字串,所以要么
byte random = Convert.ToByte('A');
或簡單的轉換為位元組
byte random = (byte)'A'
如果您不知道,我沒有假設,一個位元組只能包含 0 - 255 范圍內的值,而一個字符可以包含 UTF-16 規范內的所有內容。
所以這行不通
byte random = Convert.ToByte('\u4542');
并導致錯誤:
對于無符號位元組,值太大或太小。
https://dotnetfiddle.net/anjxt5
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/415667.html
標籤:
上一篇:SpringCloudConfigServer不在本機模式下提供特定于應用程式的屬性
下一篇:如何讓圖片框不相互重疊?
