gpt4 book ai didi

将 int 转换为 uint8_t 数组 HEX 值

转载 作者:太空宇宙 更新时间:2023-11-03 23:42:56 26 4
gpt4 key购买 nike

我想获取一个 int,并将其转换为 uint8_t 十六进制数数组?转换后的 int 在 HEX 中的长度最大为 8 个字节。我能够使用一种方法将 int (19604) 转换为 uint8_t 数组,如下所示:

00-00-00-00-00-00-00-00-04-0C-09-04

但我需要它看起来像这样:

00-00-00-00-00-00-00-00-00-00-4C-94

我使用的算法是这样的:

void convert_file_size_to_hex(long int size)
{
size_t wr_len = 12;
long int decimalNumber, quotient;
int i=wr_len, temp;

decimalNumber = size;
quotient = decimalNumber;
uint8_t hexNum[wr_len];
memset(hexNum, 0, sizeof(hexNum));

while(quotient != 0) {
temp = quotient % 16;
hexNum[--i] = temp;
quotient /= 16;
}

我该怎么做呢?我应该使用不同的算法还是应该尝试对结果进行位移?我对 C 中的位移有点陌生,所以一些帮助会很棒。谢谢!

最佳答案

考虑以下代码:

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

int main()
{
unsigned char hexBuffer[100]={0};
int n=19604;
int i;

memcpy((char*)hexBuffer,(char*)&n,sizeof(int));

for(i=0;i<4;i++)
printf("%02X ",hexBuffer[i]);

printf("\n");

return 0;
}

只用一个简单的语句就可以将int转换成byte buffer

memcpy((char*)hexBuffer,(char*)&n,sizeof(int));

打印循环时可以使用 8 而不是 4

关于将 int 转换为 uint8_t 数组 HEX 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40827816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com