如何显示保存在 int 变量中的文本

本文关键字:变量 int 文本 存在 保存 何显示 显示 | 更新日期: 2023-09-27 18:37:21

我的变量保存一些文本,但当前存储为 int(使用的类读取内存地址处的字节并转换为 int。 Variable.ToString 只显示十进制表示形式,但不将其编码为可读文本,或者换句话说,我现在想使用 ascii 编码或其他东西将数据从 int 转换为字符串。

如何显示保存在 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 字节转换器