使用 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。您不能也不需要“add0x 在 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 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在C#中将十六进制字符串转换为其数值[重复]

C# short、string、二进制之间的转换问题。

将包含以“0x”开头的十六进制值的字符串转换为整数或长整数

从字节数组转换为字符串十六进制c# [重复]

试图从 c# 字符串转换为 SQL 二进制文件

C# 2.0 中的十六进制到字节 []