如何添加(连接)两个 Google.Protobuf.ByteStrings?C#

Mat*_*kov 2 c# protocol-buffers

我没有找到在谷歌文档中添加两个字节串的方法。我尝试将它们转换为字符串,连接,然后再转换回来。但它在转换回 ByteString 时陷入困境。

if (someList.Count > 3)
{
    var bigString = "";
    for (int i = 0; i < someList.Count; i++)
    {
        string partString= someList.ElementAt(i).ToBase64();
        bigString += partString;
        Logger.Write($"{i}");
    }
    Logger.Write("here");
    var chunk = ByteString.FromBase64(bigString);
    Logger.Write("here2");
    SomeFunc(chunk);
    someList.Clear();
}
Run Code Online (Sandbox Code Playgroud)

它到达“这里”,但永远不会到达“这里2”。

UPD:someList 中的字节字符串包含 WaveIn 音频数据

Jon*_*eet 7

我绝对不建议转换为 base64 并返回 - 没有必要这样做,并且它会导致问题,因为由于填充,base64 字符串不能像这样自然地连接。

看起来您实际上并没有尝试连接两个ByteString,而是连接一些任意数字。我建议将它们全部写入 a ,然后从中MemoryStream创建一个新的:ByteString

using var tempStream = new MemoryStream();
foreach (var byteString in someList)
{
    byteString.WriteTo(tempStream);
}
tempStream.Position = 0;
var combinedString = ByteString.FromStream(tempStream);
Run Code Online (Sandbox Code Playgroud)