最简单的是取每个数字并将其视为一点.每组8位可以存储在一个字节中.然后您可以将其作为字节流发送.您还需要存储原始字符串的长度,以便区分"0"和"00".
这是您可以编写从字符串到字节数组的转换的一种方法:
byte[] convertToBytes(string s)
{
byte[] result = new byte[(s.Length + 7) / 8];
int i = 0;
int j = 0;
foreach (char c in s)
{
result[i] <<= 1;
if (c == '1')
result[i] |= 1;
j++;
if (j == 8)
{
i++;
j = 0;
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
扭转操作非常相似.
如果需要将数据作为字符串传输,则可以对结果字节数组进行64位编码.
您可能还想考虑将其保留在内存中.这比将其存储为字符串更有效,其中每个数字都存储为2字节字符.您使用的内存大约是存储数据所需内存的16倍.令人沮丧的是,在这种形式下使用起来稍微困难一些,所以如果你有足够的内存,那么你目前正在做的事情可能就好了.