如何显示保存在 int 变量中的文本
本文关键字:变量 int 文本 存在 保存 何显示 显示 | 更新日期: 2023-09-27 18:37:21
我的变量保存一些文本,但当前存储为 int(使用的类读取内存地址处的字节并转换为 int。 Variable.ToString 只显示十进制表示形式,但不将其编码为可读文本,或者换句话说,我现在想使用 ascii 编码或其他东西将数据从 int 转换为字符串。
这是一个演示(基于我们上面的 Q+A)。
注意:使用空终止符设置字符串作为测试,然后将其编码为 ASCII 字节,然后使用 unsafe(您需要在项目属性的"构建选项"中允许它),通过每个字节进行转换,直到达到0x0。
private void button1_Click(object sender, EventArgs e)
{
var ok = "OK" + (char)0;
var ascii = Encoding.ASCII;
var bin = ascii.GetBytes( ok );
var sb = new StringBuilder();
unsafe
{
fixed (byte* p = bin)
{
byte b = 1;
var i = 0;
while (b != 0)
{
b = p[i];
if (b != 0) sb.Append( ascii.GetString( new[] {b} ) );
i++;
}
}
}
Console.WriteLine(sb);
}
请注意 FIXED 语句,这是必需的托管字符串/数组等不保证静态放置在内存中 - 这确保了在该部分。
假设一个整数变量
int x=10;
您可以将其转换为字符串,如下所示
string strX = x.ToString();
试试这个
string s = "9quali52ty3";
byte[] ASCIIValues = Encoding.ASCII.GetBytes(s);
foreach(byte b in ASCIIValues) {
Console.WriteLine(b);
}
Int32.ToString() 有一个采用格式字符串的重载。 查看可用的格式字符串并使用其中之一。
从你之前的问题来看,你拥有的 int(可能)是指向字符串的指针。 根据指针处的数据是字符还是字节,执行以下操作之一来获取字符串:
var s = new string((char*)myInt);
var s = new string((sbyte*)myInt);
好的。如果你的变量是一个指针,那么 Tim 会给你指明正确的方向(假设它是一个地址而不是一个地址的偏移量 - 在这种情况下,你需要从开始地址偏移)。
另一方面,如果您的变量包含四个编码的 ascii 字符(每个字符一个字节),那么您需要拆分为字节并将每个字节转换为一个字符。像这样的东西Console.WriteLine(TypeDescriptor.GetConverter(myUint).ConvertTo(myUint, typeof(string)));
从这里 - MSDN 字节转换器