我正在尝试编写一个小函数,它接受整数数据并将其转换为 char 数组内的十六进制值。
我想做的是:
- 取int数组数据
- 将其转换为另一个数组中的十六进制
- 将十六进制数组的内容转换为字符串
- 打印字符串的内容
int main()
{
int data[4096];
char hexString[255];
char* blah;
data[0] = 1;
data[1] = 2;
data[2] = 3;
data[3] = 4;
data[4] = 5;
data[5] = 6;
data[6] = 7;
data[7] = 8;
data[8] = 9;
data[9] = 89778116;
for(int i = 0; i < 255; i++)
{
sprintf(&hexString[i], "%02x", data[i]);
printf("%i %i %s\n", i, data[i], &hexString[i]);
if(data[i] == NULL) {break;}
}
// print contents of hexString as a single string here
return 1;
}
char
不能代表与 a 相同数量的值int
.
通常是sizeof(int) == 4 * sizeof(char)
。因此,如果您想将它们保存在字符数组中,则需要二维。
char hexString[4096][10];
// 2 ^ 32 => 9ba461594 in hex, so you need a 10th space for the '\0'
sprintf(&hexString[i], "%02x", data[i]);
您编码的方式有一个数组,并在每次迭代后不断覆盖:
after iter 1: hexString = {'0', '1', '\0', ...}
after iter 2: hexString = {'0', '0', '2', '\0', ...}
after iter 3: hexString = {'0', '0', '0', '3', '\0', ...}
然后你不断移动字符串的开头,从位置 0、1、2 开始打印......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)