LARGE_INTEGER 64位的输出格式

本文详细介绍了十六进制输出格式,特别是针对__int64类型的特殊前缀要求,提供了深入的理解和应用指南。

%016I64x

第一个016是指当最左边无数据时用00填充;后面的I64x是__int64的前缀要求格式十六进制输出。

我想要测试分治法求解最大子数组和优化后的蛮力算法求解最大子数组,请参考以下代码给我生成对应的测试代码。void testAlgorithms() { // 获取高精度计时器的频率 LARGE_INTEGER frequency; QueryPerformanceFrequency(&frequency); int scales[] = {100, 500, 1000, 2000, 3000, 4000, 5000, 10000, 15000, 20000}; int numScales = sizeof(scales) / sizeof(scales[0]); for (int i = 0; i < numScales; i++) { int n = scales[i]; int *arr = (int *)malloc(n * sizeof(int)); if (arr == NULL) { printf("内存分配失败!\n"); return; } srand(time(NULL)); // 随机生成数组元素,范围为-50到49 for (int j = 0; j < n; j++) { arr[j] = rand() % 100 - 50; } // 测试分治法的计算时间 LARGE_INTEGER startDC, endDC; QueryPerformanceCounter(&startDC); MaxSubarray dcResult = findMaxSubarray(arr, 0, n - 1, 0); QueryPerformanceCounter(&endDC); double timeDC = getElapsedTime(startDC, endDC, frequency); // 测试蛮力法的计算时间 LARGE_INTEGER startBF, endBF; QueryPerformanceCounter(&startBF); MaxSubarray bfResult = optimizedBruteForceMaxSubarray(arr, n, 0); QueryPerformanceCounter(&endBF); double timeBF = getElapsedTime(startBF, endBF, frequency); // 打印测试结果 printf("n = %d:\n", n); printf("分治法计算时间: %.6f秒\n", timeDC); printf("优化后的蛮力法计算时间: %.6f秒\n\n", timeBF); free(arr); // 释放分配的内存 } }double getElapsedTime(LARGE_INTEGER start, LARGE_INTEGER end, LARGE_INTEGER frequency) { return (double)(end.QuadPart - start.QuadPart) / frequency.QuadPart; }case 3: { printf("测试规模:\n"); testAlgorithms(); break; }
03-19
#include <windows.h> #include <winioctl.h> #include <iostream> #include <vector> #include <string> // MFT相关结构定义 #pragma pack(push, 1) struct ATTRIBUTE_HEADER { DWORD type; DWORD length; BYTE non_resident; BYTE name_length; WORD name_offset; DWORD flags; WORD instance; }; struct FILE_NAME_ATTRIBUTE { DWORD parent_ref; DWORD parent_seq; LARGE_INTEGER ctime; LARGE_INTEGER mtime; LARGE_INTEGER atime; LARGE_INTEGER alloc_size; LARGE_INTEGER real_size; DWORD flags; DWORD reparse; BYTE name_length; WCHAR name[1]; }; #pragma pack(pop) std::vector<std::wstring> image_extensions = { L".jpg", L".jpeg", L".png", L".gif", L".bmp", L".tiff", L".webp", L".raw" }; bool is_image_file(const std::wstring& filename) { size_t dot_pos = filename.find_last_of(L'.'); if (dot_pos == std::wstring::npos) return false; std::wstring ext = filename.substr(dot_pos); for (const auto& img_ext : image_extensions) { if (_wcsicmp(ext.c_str(), img_ext.c_str()) == 0) return true; } return false; } void scan_volume(const wchar_t* volume_path) { HANDLE hVolume = CreateFileW( volume_path, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL ); if (hVolume == INVALID_HANDLE_VALUE) { std::wcerr << L"无法打开卷: " << volume_path << L" 错误: " << GetLastError() << std::endl; return; } NTFS_VOLUME_DATA_BUFFER vol_data; DWORD bytes_returned; if (!DeviceIoControl( hVolume, FSCTL_GET_NTFS_VOLUME_DATA, NULL, 0, &vol_data, sizeof(vol_data), &bytes_returned, NULL)) { CloseHandle(hVolume); return; } // 读取MFT的逻辑需要在此继续实现 // (实际实现需要处理分页读取、属性解析等复杂操作) CloseHandle(hVolume); } int main() { scan_volume(L"\\\\.\\C:"); return 0; }
03-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值