将字节值存储在字符串中?将字节转换为字符串
本文关键字:字符串 字节 转换 存储 | 更新日期: 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
方法来累积字节。