如何从 Vala 中的 uint8[] 创建字符串?
How to create string from uint8[] in Vala?
我正在从 DataInputStream 填充字节的缓冲区中进行异步读取。
uint8[] buffer = new uint8[4096];
size_t bytes = 0;
bool success = false;
do
{
success = yield process.get_stdout_pipe().read_all_async(
buffer,
GLib.Priority.LOW,
null,
out bytes
);
{
while(success && bytes > 0);
我想将数据组合成一个字符串。我看了一下 StringBuilder 但它没有附加任何数组的功能。
在异步读取时构建字符串的最佳方法是什么?
您可以随时将 uint8[]
转换为 string
。
代码:
uint8[] chars = {31,32,33,34,35,36,37};
print(@"$((string) chars)\n");
输出:
!"#$%
作为 print
解决方案的替代方案,一个简单的循环并在循环中使用 StringBuilder
中的 append_c
是可行的。只需将每个字节追加到数组末尾
var builder = new StringBuilder(buffer.length);
for(int i=0; i<buffer.length; i++ {
builder.append_c(buffer[i]);
}
我正在从 DataInputStream 填充字节的缓冲区中进行异步读取。
uint8[] buffer = new uint8[4096];
size_t bytes = 0;
bool success = false;
do
{
success = yield process.get_stdout_pipe().read_all_async(
buffer,
GLib.Priority.LOW,
null,
out bytes
);
{
while(success && bytes > 0);
我想将数据组合成一个字符串。我看了一下 StringBuilder 但它没有附加任何数组的功能。
在异步读取时构建字符串的最佳方法是什么?
您可以随时将 uint8[]
转换为 string
。
代码:
uint8[] chars = {31,32,33,34,35,36,37};
print(@"$((string) chars)\n");
输出:
!"#$%
作为 print
解决方案的替代方案,一个简单的循环并在循环中使用 StringBuilder
中的 append_c
是可行的。只需将每个字节追加到数组末尾
var builder = new StringBuilder(buffer.length);
for(int i=0; i<buffer.length; i++ {
builder.append_c(buffer[i]);
}