繁体   English   中英

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

[英]String to byte hex convert

我想问一个关于从Windows窗体将字符串转换为字节的问题,我已经尝试了几种方法来完成这些操作,而将字符串转换为十六进制可以成功转换为字符串,但是我需要将其转换回十六进制字节的问题是因为API仅获取字节。

这是下面的转换:

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需要像0x0A这样的整个十六进制值,我需要向API发送0x0A。

在提供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"));  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM