【发布时间】:2020-07-03 07:53:49
【问题描述】:
我尝试将 uint64_t 数组解析为 char 数组(结果为十进制,用逗号分隔)。
我使用 memcpy,每次我得到一个随机值。 iota() 函数转换最大 uint32_t 值。我尝试将 uint64_t 与 2 uint32_t 分开,但我从来没有得到正确的结果。
uint64_t numbers[10] = { 201234567890123456,
12345678901234567890,
98765432109876543,
65432109887,
12345234512345,
217631276371261627,
12354123512453124,
2163521442531,
2341232142132321,
1233432112 };
char array[1000] = "";
预期结果:
array = "201234567890123456,12345678901234567890,98765432109876543,65432109887,12345234512345,217631276371261627,12354123512453124,2163521442531,2341232142132321,1233432112"
我从this 主题尝试了 int64ToChar,但结果是:
void uint64ToChar(char a[], int64_t n) {
memcpy(a, &n, 10);
}
uint64_t number = 12345678900987654;
char output[30] = "";
uint64ToChar(output, number);
Result:
�g]T�+
感谢您的帮助。
【问题讨论】:
-
您想使用以 10 为底的 ascii 字符打印数字的表示形式。使用
snprintf。 -
如果您显示您尝试过的代码会有所帮助。
-
你的
uint64_t数组初始化不会这样工作:它需要在={数据};周围加上大括号。 -
P.S.数组
21763127637126371627中的第六个元素大于 64 位无符号整数。使用较小的数字。