CpuCoreMetrics
数据结构
| 字节索引 | 类型 | 字段含义 |
|---|---|---|
| 0-3 | float32 | CPU 使用率 [%] |
| 4-7 | float32 | CPU 频率 [MHz] |
CpuCoreMetrics 固定为 8 字节
示例
C++ 示例
struct CpuCoreMetrics {
float usage;
float frequency;
};
Rust 示例
#[repr(C)]
#[derive(Clone, Copy, Debug, Default)]
pub struct CpuCoreMetrics {
pub usage: f32,
pub frequency: f32,
}
const _: () = {
assert!(core::mem::size_of::<CpuCoreMetrics>() == 8);
assert!(core::mem::align_of::<CpuCoreMetrics>() == 4);
};
Dart 示例
import 'dart:typed_data';
final class CpuCoreMetricsView {
static const int byteLength = 8;
final ByteData data;
CpuCoreMetricsView(ByteBuffer buffer, [int offsetInBytes = 0])
: data = ByteData.view(buffer, offsetInBytes, byteLength);
double get usage => data.getFloat32(0, Endian.little);
double get frequency => data.getFloat32(4, Endian.little);
}
Java 示例
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
public final class CpuCoreMetricsView {
public static final int BYTE_LENGTH = 8;
private final ByteBuffer buffer;
private final int offset;
public CpuCoreMetricsView(ByteBuffer buffer, int offset) {
if (offset < 0 || offset + BYTE_LENGTH > buffer.capacity()) {
throw new IndexOutOfBoundsException("CpuCoreMetrics payload requires 8 bytes");
}
this.buffer = buffer.order(ByteOrder.LITTLE_ENDIAN);
this.offset = offset;
}
public float usage() { return buffer.getFloat(offset); }
public float frequency() { return buffer.getFloat(offset + 4); }
}