C# 字符串到字节的十六进制转换
我想问一个关于从windows窗体将字符串转换为字节的问题,我尝试了几种方法来实现这些,而将字符串转换为十六进制是成功的转换为字符串,但问题是我需要将其转换回十六进制字节,因为API只获取字节 这是下面的转换:C# 字符串到字节的十六进制转换,c#,c#-4.0,C#,C# 4.0,我想问一个关于从windows窗体将字符串转换为字节的问题,我尝试了几种方法来实现这些,而将字符串转换为十六进制是成功的转换为字符串,但问题是我需要将其转换回十六进制字节,因为API只获取字节 这是下面的转换: string getTxtString = txtString.text; int convertToInt = int32.Parse(getTxtString); string hexString = convertToInt.toString("X"); //我尝试了X2,它将
string getTxtString = txtString.text;
int convertToInt = int32.Parse(getTxtString);
string hexString = convertToInt.toString("X");
//我尝试了X2,它将得到两位数,例如0A
在这种情况下如何转换为十六进制字节,或者请提供其他解决方案
例如:
11=0A
0A是以下各项的转换:
int convertToInt = int32.Parse(getTxtString);
string hexString = convertToInt.toString("X2");
从上面的转换将只得到0A。
Api需要整型Hex值,比如0x0A,我需要将0x0A发送给Api。在提供fromBase
的同时尝试(16
)
如果您实际编码了一个Int32
(例如“FF120A”
),并且希望获取最后一个字节:
请注意,字节
(例如,0x0A
)总是相同的,它的字符串表示形式可能会有所不同:
byte result=Convert.ToByte(十六进制字符串,16)
@DmitryBychenko它得到整数,但我需要十六进制值才能将其发送到APII对不起;如果只需要一个字节
,它应该是Convert.ToByte
11=0A
?打字错误?@Fildor很抱歉我写的问题不好,问题已经更新了。谢谢你的快速回答,在我的情况下API只接收字节,我需要将字符串转换为int32或ToString(“X2”)以获得十六进制值,从您的答案来看,它只是使用字符串字节来获取转换为API的值吗?@Victor:您有一个表示某个整数值(例如“FF120A”)的字符串,API希望字节
(例如0x0A==10=0b00001010
)而不是它的字符串表示形式。如果您可以保证字符串
是字节
,请将转换为.ToByte
;如果没有-您必须添加强制转换:未选中((字节)Convert.ToInt32(…)
@Dmitry Bychenko感谢您的建议,我尝试使用int或byte转换我的字符串,例如“0x0A”,它显示格式错误,但原因是什么?@Victor:请问导致错误的代码是什么?int getbyte=Convert.ToByte(string)或byte getbyte=Convert.ToByte(弦),我觉得我错了,对吗?
// "0A" (string) -> 0x0A == 10 == 0b00001010 (byte)
byte result = Convert.ToByte(hexString, 16);
...
SomeApiMethod(..., result, ...);
// "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, ...);
// 00001010 - binary
Console.WriteLine(Convert.ToString(result, 2).PadLeft(8, '0'));
// 10 - decimal
Console.WriteLine(result);
// 0A - hexadecimal
Console.WriteLine(result.ToString("X2"));