Преобразование строки в байт в шестнадцатеричном формате - PullRequest
0 голосов
/ 03 сентября 2018

Я хотел бы задать вопрос о преобразовании строки в байт из формы Windows, я попытался сделать это несколькими способами, в то время как преобразование строки в шестнадцатеричное успешно преобразование в строку, но проблема, мне нужно, чтобы преобразовать ее обратно в шестнадцатеричный байт потому что API получает только байты.

Вот конвертируемый ниже:

string getTxtString = txtString.text;
int convertToInt = int32.Parse(getTxtString);
string hexString = convertToInt.toString("X"); 

// у меня есть попытка с X2, он получит две цифры, например, 0A

Как преобразовать в шестнадцатеричный байт в подобной ситуации или укажите другое решение.

Например: 11 = 0А

0A - это приведенное ниже преобразование:

 int convertToInt = int32.Parse(getTxtString);
 string hexString = convertToInt.toString("X2");

Из приведенного выше конверта получите только 0А. Api нужно целое значение Hex , например, 0x0A, мне нужно отправить 0x0A в API.

1 Ответ

0 голосов
/ 03 сентября 2018

Попробуйте Convert.ToByte при предоставлении fromBase (16 в вашем случае)

 // "0A" (string) -> 0x0A == 10 == 0b00001010 (byte)
 byte result = Convert.ToByte(hexString, 16);

 ...

 SomeApiMethod(..., result, ...); 

В случае, если у вас есть Int32, фактически закодированный (например, "FF120A"), и вы хотите получить последний байт :

 // "FF120A" (or "0xFF120A") -> 0xFF120A (int) -> 0x0A (byte)
 // unchecked - we don't want OverflowException on integer overflow
 byte result = unchecked((byte)Convert.ToInt32(hexString, 16));

 ...

 SomeApiMethod(..., result, ...); 

Обратите внимание, что byte (например, 0x0A) всегда одинаково , это строковое представление , которое может варьироваться :

 // 00001010 - binary
 Console.WriteLine(Convert.ToString(result, 2).PadLeft(8, '0')); 
 // 10       - decimal
 Console.WriteLine(result);  
 // 0A       - hexadecimal
 Console.WriteLine(result.ToString("X2"));  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...