字符串到字节十六进制转换

String to byte hex convert

我想问一个关于字符串从 windows 形式转换为字节的问题,我已经尝试了几种方法来做到这一点,虽然将字符串转换为十六进制是成功的,但我需要解决这个问题将其转回十六进制字节,因为 API 仅获取字节。

下面是转换:

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

// 我试过 X2 它将得到两位数字,例如 0A

在这种情况下如何转换为 Hex 字节或请提供其他解决方案。

例如: 11 = 0A

0A是下面的转换:

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

从上面的转换只会得到0A。 Api 需要完整的 Hex 值,如 0x0A,我需要将 0x0A 发送到 API。

在提供 fromBase 的同时尝试 Convert.ToByte(在您的情况下为 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"));