c#如何从整数中获取十六进制文字

c#如何从整数中获取十六进制文字,c#,string,hex,type-conversion,C#,String,Hex,Type Conversion,有很多方法可以将整数转换为十六进制字符串,但是有没有一种方法可以将其转换为十六进制文本 string = z integer = 122 hex = 0X7A 您是否正在查找字符串的转储(用十六进制值表示字符串中的字符)?大概是这样的: using System.Linq; ... string test = "hello z"; // To dump string dump = string.Join(" ", test.Select(c => $"0x{(int)c:

有很多方法可以将整数转换为十六进制字符串,但是有没有一种方法可以将其转换为十六进制文本

string = z
integer = 122
hex = 0X7A

您是否正在查找字符串的转储(用十六进制值表示字符串中的字符)?大概是这样的:

 using System.Linq;

 ...

 string test = "hello z";

 // To dump
 string dump = string.Join(" ", test.Select(c => $"0x{(int)c:X2}"));
 // From dump
 string restore = string.Concat(dump
   .Split(' ')
   .Select(item => (char)Convert.ToInt32(item, 16))); 

 Console.WriteLine(dump);
 Console.WriteLine(restore);
结果

 0x68 0x65 0x6C 0x6C 0x6F 0x20 0x7A
 hello z

无论表示形式如何,整数始终是整数。您可以将十六进制值直接分配给
int
。仅当您希望显示或将其用作字符串时,表示才会有所不同:

int integer = 122;
int integer_in_hex = 0X7A;
对于显示,您可以使用格式字符串
“X2”
,这意味着显示长度为2个位置的十六进制数字:

Console.WriteLine(integer_in_hex.ToString("X2"));
Console.WriteLine(integer.ToString("X2"));
输出相同:

7A
7A


有关更多信息,请阅读我不理解的

。你说的十六进制文字是什么意思?在问题的上下文中,
string=z
是什么意思?你的问题,并试图使它清楚,所以它只是为了显示更多的东西,并没有关系,它是如何存储在内存中的十六进制占用更少的空间。为什么十六进制占用更少的空间?整数可以保存介于-2147483648和2147483647之间的数字,其长度为32位。这是它在内存中所需的空间,与表示形式无关。@bat3a这里有关于int32的更多信息。请阅读@bat3a十六进制在上下文中占用的空间更少,因为它只需要2个字符来表示3位数字。但是
1
100000000
的整数使用相同的内存空间。为了比较起见,
char
的长度为16位,因此使用2
char
s来表示3位数字等于32位,这与int.;)如果您增加数字和
char
s的数量,您很快就会超过整数所需的内存:)