将字节值存储在字符串中?将字节转换为字符串

本文关键字:字符串 字节 转换 存储 | 更新日期: 2023-09-27 18:28:05

如果我从一个源获得8个比特,并将这8个比特放入一个字节,那么我如何存储这个字节?每个字节都是消息的一部分(曾经是一个字符串)我不知道最终会有多少字节——因此使用字节数组并不是一个真正的选择。我可以把它储存在一个字符串中吗?我想在得到所有字节后能够重新组装字符串,我该怎么做?

使用下面的方法将8位组成一个字节。。

 public byte GetByte(BitArray array){
        Byte byt = 0;
        for (int i = 7; i >= 0; i--){
            byt = (byte)((byt << 1) | (array[i] ? 1 : 0));
        }
        return byt;
    }

我可以这么说。。。

 byte valueInByte = GetByte(bitsOfMessage);

我在想我能做到。。。

 bytesOfTheMessage += (valueInByte.ToString() + "+");  //bytesOfTheMessage is a string

但是。。。我在一个字符串中有一堆字节值。。。我需要提取和转换,但我要转换成什么。我得到的第一个值是"138",当转换回原始形式时,它应该是数字2。我可以判断所有正确的值都在字符串中,因为有一个模式,它与我转换成位的原始字符串一致。。你知道我该怎么做吗?

将字节值存储在字符串中?将字节转换为字符串

为什么不使用List<byte>?它将随着您添加更多字节而动态增长。然后你可以把它解码成一个字符串。

好吧,如果你确实想/需要把它们放在一个字符串中(尽管这可能不是存储数据的最有效方法,如果你真的只是把它用作存储),你可以沿着以下几行做一些事情:

例如,这段代码将打印出字符"a"(谁的ASCII代码是十进制的97。请注意,任何超过127的值都显示为"?")

        char[] ac = { (char)(byte)97 };
        string s = new String(ac);
        Console.WriteLine(s);

准备编译的示例程序如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ByteTest
{
class Program
{
    static void Main(string[] args)
    {
        char[] ac = { (char)(byte)97 }; //converts it to a character
        string s = new String(ac); //converts it to a string
        Console.WriteLine(s); //writes 'a'
        Thread.Sleep(10000); //displays the 'a' for 10 seconds, then finishes executing
    }
}
}

对于您的具体情况,您可以将其修改为以下

 string Message = "";
 ...
 char[] ac = { (char)valueInByte };
 string s = new String(as);
 Message += s;

MemoryStream是另一个可能的容器,

http://msdn.microsoft.com/en-us/library/system.io.memorystream.aspx

您可以使用它的WriteByte方法来累积字节。