将字节打印为longlong

问题描述 投票:0回答:1

我有一个指向196字节块的void指针。我需要将连续字节打印为LONGLONG(__ int64)值。我正在使用以下代码块进行打印,但是观察到应用程序崩溃。我究竟做错了什么?有更好的方法吗?

        LONGLONG* llx = 0;
        void *ptr = evt.MofData;
        for (int i = 0; i < evt.MofLength; i += 8)
        {
            llx = reinterpret_cast<LONGLONG*>(ptr);
            sprintf_s(msgbuf, "szof(LL[%d]), val[%ll]\n ", sizeof(LONGLONG), (*llx));
            OutputDebugString(msgbuf);
            llx = (LONGLONG *)llx + 1;
        }
c++ windows msdn
1个回答
0
投票

使用memcpy

constexpr std::size_t length = 196;
constexpr std::size_t n_blocks = length / sizeof(LONGLONG);
LONGLONG llx[n_blocks];
memcpy(llx, ptr, n_blocks * sizeof(LONGLONG));

现在您可以从LONGLONG数组中读取llx

© www.soinside.com 2019 - 2024. All rights reserved.