字符数组数据的解码
Decoding of char array data
我有一个网格,我需要从中读取其顶点位置,但我只能得到一个包含该数据的缓冲区,我似乎可以将其作为 utf-8 字符数组获取。
目前我正在将数据从缓冲区获取到我提到的数组中并将其写入 char* 但我无法正确解码或看起来如此。
以下代码从缓冲区中读取数据:
char* GetDataFromIBuffer(Windows::Storage::Streams::IBuffer^ container)
{
unsigned int bufferLength = container->Length;
auto dataReader = Windows::Storage::Streams::DataReader::FromBuffer(container);
Platform::Array<unsigned char>^ managedBytes =
ref new Platform::Array<unsigned char>(bufferLength);
dataReader->ReadBytes(managedBytes);
char * bytes = new char[bufferLength];
for (unsigned int i = 0; i < bufferLength; i++)
{
if (managedBytes[i] == '[=10=]')
{
bytes[i] = '0';
}
else
{
bytes[i] = managedBytes[i];
}
}
}
我可以在调试模式下看到数据,但我需要一种方法使其可读并将其写入文件,我可以在其中复制网格数据并在单独的程序中绘制网格。
下图为数组中可以看到的数组数据:
debug mode
注意不要混淆文本编码和数据类型。
char 是一种经常用于缓冲区的类型,因为它有一个字节的大小,但这并不意味着缓冲区中包含的数据是文本。
您的调试视图似乎确认缓冲区中的数据不是文本,因为当解释为文本时,它会给出奇怪的字符,例如“ÿ”、“^”等...
UTF-8 是一种编码 unicode 文本的方式,因此它与二进制数据无关。
您需要找到一种方法将缓冲区数据信息转换为数据的内部类型,应该记录您从何处获得该数据(也许它只是一个浮点数数组?)
我有一个网格,我需要从中读取其顶点位置,但我只能得到一个包含该数据的缓冲区,我似乎可以将其作为 utf-8 字符数组获取。
目前我正在将数据从缓冲区获取到我提到的数组中并将其写入 char* 但我无法正确解码或看起来如此。
以下代码从缓冲区中读取数据:
char* GetDataFromIBuffer(Windows::Storage::Streams::IBuffer^ container)
{
unsigned int bufferLength = container->Length;
auto dataReader = Windows::Storage::Streams::DataReader::FromBuffer(container);
Platform::Array<unsigned char>^ managedBytes =
ref new Platform::Array<unsigned char>(bufferLength);
dataReader->ReadBytes(managedBytes);
char * bytes = new char[bufferLength];
for (unsigned int i = 0; i < bufferLength; i++)
{
if (managedBytes[i] == '[=10=]')
{
bytes[i] = '0';
}
else
{
bytes[i] = managedBytes[i];
}
}
}
我可以在调试模式下看到数据,但我需要一种方法使其可读并将其写入文件,我可以在其中复制网格数据并在单独的程序中绘制网格。
下图为数组中可以看到的数组数据:
debug mode
注意不要混淆文本编码和数据类型。
char 是一种经常用于缓冲区的类型,因为它有一个字节的大小,但这并不意味着缓冲区中包含的数据是文本。
您的调试视图似乎确认缓冲区中的数据不是文本,因为当解释为文本时,它会给出奇怪的字符,例如“ÿ”、“^”等...
UTF-8 是一种编码 unicode 文本的方式,因此它与二进制数据无关。
您需要找到一种方法将缓冲区数据信息转换为数据的内部类型,应该记录您从何处获得该数据(也许它只是一个浮点数数组?)