gpt4 book ai didi

c - c中的十六进制到ASCII

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

这是我的逻辑,在 C 中将 HEX 转换为 ASCII:

for (i=0;i<ArraySize;i++)
{
/*uses a bitwise AND to take the top 4 bits from the byte,
0xF0 is 11110000 in binary*/
char1 = Tmp[i] & 0xf0;
char1 = char1 >> 4;
/*bit-shift the result to the right by four bits (i.e. quickly divides by 16)*/
if (char1 >9)
{
char1 = char1 - 0xa;
char1 = char1 + 'A';
}
else
char1 = char1 + '0';
Loc[j]=char1;
j++;
/*means use a bitwise AND to take the bottom four bits from the byte,
0x0F is 00001111 in binary*/
char1 = Tmp[i] & 0x0f;
if (char1 >9)
{
char1 = char1 - 0xa;
char1 = char1 + 'A';
}
else
char1 = char1 + '0';
Loc[j]=char1;
j++;
Loc[j]=0;
}

Temp 和 Loc 是字符串缓冲区。定义并有数据。它不能正常工作。我正在从某个文件(示例 fread)中读取临时数据。它在特定点停止读取文件。如果我先改变

0xf0

0x0f

这是读取文件的方式:

BytesRead = fread (Tmp,1,Bytes,PrcFile);

然后它读取整个文件。我找不到丢失的东西。你能在这方面帮助我吗?谢谢

最佳答案

这不是一个答案,而是一个观察——使用它是因为它格式化了代码

static char lookup[] = { '0', '1', '2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
int j = 0;
for (i=0; i<ArraySize; ++i)
{
loc[j++] = lookup[(Tmp[i] & 0xf0) >> 4];
loc[j++] = lookup[Tmp[i] & 0xf];
}
loc[j] = 0;

使代码更快更简单。

关于c - c中的十六进制到ASCII,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9227246/

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