首页 > 解决方案 > Mfast 解码器.解码失败

问题描述

当我打电话时

message_cref msg = decoder.decode(start,end);

它在扔

\src\mfast\coder\decoder\fast_istreambuf.h(47): Throw in f
unction unsigned char __thiscall mfast::fast_istreambuf::sbumpc(void)
Dynamic exception type: class boost::exception_detail::clone_impl<class mfast::fast_dynamic_error>
std::exception::what: Unknown exception [struct mfast::tag_error_code *] = Buffer underflow

它是一个库头文件。当我对字符串进行硬编码并将其传递给解码时不会出现这种情况,但是当我通过将数据编码为 UTF-8 来传递数据时会失败。

我从交易所得到的数据是

"Ýÿ”20181009-06:49:09.66±±jÏ€€€‚_À€ôCOCUDAKL20DEC201¸2972³ø2?IÁ€€€€€€€s•€€€€€€€€€€“ö€‚ "

使用 C++/CLI 将其转换为 UTF-8

array<Byte>^ byteArray = Encoding::UTF8->GetBytes(toBeEncoded);

    for each(Byte v in byteArray)
    {
          finalString += String::Format("0x{0:X2},", v);
    }
       string mani = context.marshal_as<string>(finalString);
        mani.pop_back(); //To eliminate last ',' from String.
        cout << "Manipulated String \n" << mani << endl;

        int length = mani.length();
        strcpy_s(fast_message,3000,mani.c_str());

Here my motive is to get data in this Format:char  fast_message[] = { 0xC3, 0x9D, 0xC3, 0xBF, 0xE2, 0x80, 0x9D, 0x32, 0x30, 0x31, 0x38, 0x31, 0x30, 0x30, 0x39, 0x2D, 0x30, 0x36, 0x3A, 0x34, 0x39, 0x3A, 0x30, 0x39, 0x2E, 0x36, 0x36, 0xC2, 0xB1, 0xC2, 0xB1, 0x1F, 0x6A, 0xC3, 0x8F, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x80, 0x9A, 0x5F, 0x7F, 0x7F, 0xC3, 0x80, 0xE2, 0x82, 0xAC, 0xC3, 0xB4, 0x43, 0x4F, 0x43, 0x55, 0x44, 0x41, 0x4B, 0x4C, 0x32, 0x30, 0x44, 0x45, 0x43, 0x32, 0x30, 0x31, 0xC2, 0xB8, 0x32, 0x39, 0x37, 0x32, 0xC2, 0xB3, 0xC3, 0xB8, 0x05, 0x08, 0x32, 0x3F, 0x49, 0xC3, 0x81, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0x73, 0xE2, 0x80, 0xA2, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC, 0xE2, 0x80, 0x9C, 0xC3, 0xB6, 0xE2, 0x82, 0xAC, 0xE2, 0x80, 0x9A, 0x03, 0xC3, 0xA2, 0xE2, 0x82, 0xAC, 0xE2, 0x82, 0xAC };

好像我fast_message在声明中硬编码它可以工作,但当我执行不同的操作或在调试时我得到的值与硬编码它相同。

任何建议为什么它会下溢。

标签: c++c++11fix-protocolfast-protocol

解决方案


推荐阅读