Joh*_*ohn 4 c++ arduino arduino-uno
我有一个二进制文件,我能够转换为uint64_t.它很大,所以我真的需要一个uint64_t.我将它转换为char数组时遇到了麻烦.我可以在独立项目中完成,但不能在Arduino上完成
我遇到的一些障碍:
任何输入都非常感谢.
假设你想在HEX中打印"数字":
uint64_t number;
unsigned long long1 = (unsigned long)((number & 0xFFFF0000) >> 16 );
unsigned long long2 = (unsigned long)((number & 0x0000FFFF));
String hex = String(long1, HEX) + String(long2, HEX); // six octets
Run Code Online (Sandbox Code Playgroud)
这就像@john 的答案的续集。
我使用以下函数:
String uint64ToString(uint64_t input) {
String result = "";
uint8_t base = 10;
do {
char c = input % base;
input /= base;
if (c < 10)
c +='0';
else
c += 'A' - 10;
result = c + result;
} while (input);
return result;
}
Run Code Online (Sandbox Code Playgroud)
来源:https ://github.com/markszabo/IRremoteESP8266/blob/master/src/IRutils.cpp#L66
小智 6
只是添加到可能的解决方案列表中。我使用以下函数:
char *uint64_to_string(uint64_t input)
{
static char result[21] = "";
// Clear result from any leftover digits from previous function call.
memset(&result[0], 0, sizeof(result));
// temp is used as a temporary result storage to prevent sprintf bugs.
char temp[21] = "";
char c;
uint8_t base = 10;
while (input)
{
int num = input % base;
input /= base;
c = '0' + num;
sprintf(temp, "%c%s", c, result);
strcpy(result, temp);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5315 次 |
最近记录: |