【问题标题】:String to byte hex convert字符串到字节十六进制转换
【发布时间】:2018-09-03 07:44:17
【问题描述】:

我想问一个关于从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。

【问题讨论】:

  • byte result = Convert.ToByte(hexString, 16);
  • @DmitryBychenko 它得到整数,但我需要十六进制值才能将其发送到 API
  • 对不起;如果你只想要一个byte,它应该是Convert.ToByte
  • 11 = 0A?错字?
  • @Fildor 很抱歉我的问题写得不好,问题已经更新了。

标签: c# c#-4.0


【解决方案1】:

尝试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"));  

【讨论】:

  • 感谢您的快速回复,在我的情况下,API 只接收字节,我需要将字符串转换为 int32 或 ToString ("X2") 以获得十六进制值,您的回答是只需使用字符串字节将转换值转换为 API?
  • @Victor:你有一个 string 代表一些整数值(例如“FF120A”),API 想要 byte(例如 0x0A == 10 = 0b00001010)而不是它的 字符串表示我>。如果你能保证stringbyte - 把Convert.ToByte;如果没有 - 你必须添加 cast: unchecked((byte)Convert.ToInt32(...)
  • @Dmitry Bychenko 感谢您的建议,我尝试使用 int 或 byte 来转换我拥有的字符串,例如 "0x0A" ,它显示格式错误,但为什么?
  • @Victor: 请问导致错误的代码是什么?
  • int getbyte = convert.ToByte(string) or byte getbyte = convert.ToByte(string),我觉得我错了对吧?
猜你喜欢
  • 2012-01-24
  • 1970-01-01
  • 2014-10-29
  • 2017-08-23
  • 1970-01-01
  • 2019-07-27
  • 2023-03-07
  • 2022-06-18
  • 2014-03-17
相关资源
最近更新 更多