使用 0x (C#) 将十六进制字符串转换为 int32 [关闭]
Posted
技术标签:
【中文标题】使用 0x (C#) 将十六进制字符串转换为 int32 [关闭]【英文标题】:Convert hex string to int32 with 0x (C#) [closed] 【发布时间】: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($"0xmyInt:X6");
@DmitryBychenk 哦,谢谢!
正如其他人所说,int
类型表示有符号整数,例如 -1 和 10。您不能也不需要“add”0x 在 int 的开头。您只能将其添加为整数的十六进制字符串表示形式,以及像 010101b 这样的二进制形式。因此这个问题是无意义的,除非你问如何在字符串前添加 0x add:string strHex = "0030FF"; string strHexCorrected = "0x" + strHex;
.
【参考方案1】:
你可以这样做:
string value = "0030FF";
int result = int.Parse(value, System.Globalization.NumberStyles.HexNumber);
string numberedHex = $"0xresult: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 = $"0xmyInt:X6";
Console.Write(myHex);
【讨论】:
哦,非常感谢!以上是关于使用 0x (C#) 将十六进制字符串转换为 int32 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章