小端序逆置

Q7h2q9 / 2024-11-09 / 原文

小端序逆置

#include <stdio.h>
#include <stdint.h>
#include <string.h>

// 逆置整数并将其转换为字节数组
void int_to_bytes_little_endian(uint32_t value, char *bytes) {
	for (int i = 0; i < 4; ++i) {
		bytes[i] = (value >> (8 * i)) & 0xFF;
	}
}

int main() {
	// 密文:要逆置的内容
	uint32_t v6[12] = {
		0x513E1D7B, 0xF1A2215, 0x56510A56, 0x545D2800,
		0x5744B07, 0x8545140, 0x56721954, 0x7655041D,
		0x57540B56, 0x73550B07, 0x5084F01, 0
	};
	
	// 定义一个足够大的char数组来存放所有的字节
	char flag[48];  // 12个整数,每个整数4个字节
	
	// 将每个整数逆置并放入flag数组
	for (int i = 0; i < 12; ++i) {
		int_to_bytes_little_endian(v6[i], &flag[i * 4]);
	}
	
	// 输出flag数组中的内容
	for (int i = 0; i < 48; ++i) {
		printf("%02X ", (unsigned char)flag[i]);
	}
	putchar('\n');

	return 0;
}