【问题标题】:Convert hex string to int32 with 0x (C#) [closed]使用 0x (C#) 将十六进制字符串转换为 int32 [关闭]
【发布时间】:2021-10-06 20:52:39
【问题描述】:

我有一个字符串得到“0030FF”。我想通过在开头添加 0x 将其转换为 int32 。有什么办法吗?

int 需要是这样的:0x0030FF。

【问题讨论】:

  • int result = Convert.ToInt32(myString, 16); 你不必加"0x" 但你可以做到
  • @DmitryBychenko 有没有办法在开头加0x?我需要它等于字符串,但是这种形式也很有用。
  • int 只保存一个整数值,如123,它没有任何格式。如果您想表示 int,您可以使用格式:Console.Write($"0x{myInt:X6}");
  • @DmitryBychenk 哦,谢谢!
  • 正如其他人所说,int 类型表示有符号整数,例如 -1 和 10。您不能也不需要“add0x 在 int 的开头。您只能将其添加为整数的十六进制字符串表示形式,以及像 010101b 这样的二进制形式。因此这个问题是无意义的,除非你问如何在字符串前添加 0x add:string strHex = "0030FF"; string strHexCorrected = "0x" + strHex;.

标签: c# string integer hex converters


【解决方案1】:

你可以这样做:

string value = "0030FF";
int result = int.Parse(value, System.Globalization.NumberStyles.HexNumber);
string numberedHex = $"0x{result:X6}";

【讨论】:

  • 是否可以将 0x 添加到这个 int 的开头?我希望它返回 0x0030ff
  • @LawLuki 现在我明白你想要什么了......注意,int 不能表示不是数字的值,如果你想让它看起来 0x0030FF 你需要使用一个字符串。我更新了我的答案。
  • 非常感谢!
  • 又名"0x" + "0030FF"...
【解决方案2】:

如果要将给定的字符串转换int,可以使用Convert

 // 16 - we expect myString being a hexadecimal int representation 
 int myInt = Convert.ToInt32(myString, 16);

如果您想将myInt 表示为0x...,您可以使用格式化(注意,int myInt 只是一些整数值,例如,123 并没有任何格式):

 // X6 is a formatting string: we want at least 6 hexadecimal digits 
 string myHex = $"0x{myInt:X6}";

 Console.Write(myHex); 

【讨论】:

  • 哦,非常感谢!
猜你喜欢
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 2014-06-09
  • 2018-06-06
  • 1970-01-01
  • 2016-03-15
  • 2013-05-29
相关资源
最近更新 更多