在 C++ 中获取纪元时间(隐式打印的十六进制值)
Getting epoc time in c++(hexadecimal value printed implicitly)
我的程序想在 C++ 中打印 epoc 时间
如果我用 fprintf/printf 命令打印,我得到正确的输出
fprintf(stdout, "epoch time=%u\t", (unsigned)time(NULL));
printf("var epoch=%u\n",(unsigned)time(NULL));
输出--->1528573149
但是当我使用 C++ 打印 epoc 时间时,输出以 "hex" 格式打印
cout<<"epoch time ="<< (unsigned)time(0);
输出---->5b1c2cdd
无法理解十进制值是如何隐式转换为十六进制值的。
对我来说显示为小数,但试试这个:
std::cout << std::dec << (unsigned)time(0);
或者您可以设置所需的格式标志:
std::cout.setf(std::ios_base::dec, std::ios_base::basefield);
唯一的办法是:
cout<<"epoch time ="<< (unsigned)time(0);
如果您之前已将 std::cout
设置为十六进制模式,则可以以十六进制打印。
例如:
#include <ctime>
#include <iostream>
#include <iomanip>
int main() {
std::cout << " decimal epoch time = " << time(0) << "\n";
std::cout << std::hex;
std::cout << "hexadecimal epoch time = " << time(0) << "\n";
}
我系统上的输出是:
decimal epoch time = 1528663129
hexadecimal epoch time = 5b1d8c59
这是我认为C++最烦人的特性I/O:要打印一个非默认格式的单项,你必须改变输出流的状态,这会影响后面所有的输出在那个流上。
如果你想以十六进制打印单个数据项(你可能在你的程序的前面已经做过),你可以这样做:
std::cout << "x = " << std::hex << x << std::dec << "\n";
这会将输出格式设置回十进制——不管它以前是什么。可能有一种复杂的方法可以将其恢复到原来的状态。
我的程序想在 C++ 中打印 epoc 时间
如果我用 fprintf/printf 命令打印,我得到正确的输出
fprintf(stdout, "epoch time=%u\t", (unsigned)time(NULL));
printf("var epoch=%u\n",(unsigned)time(NULL));
输出--->1528573149
但是当我使用 C++ 打印 epoc 时间时,输出以 "hex" 格式打印
cout<<"epoch time ="<< (unsigned)time(0);
输出---->5b1c2cdd
无法理解十进制值是如何隐式转换为十六进制值的。
对我来说显示为小数,但试试这个:
std::cout << std::dec << (unsigned)time(0);
或者您可以设置所需的格式标志:
std::cout.setf(std::ios_base::dec, std::ios_base::basefield);
唯一的办法是:
cout<<"epoch time ="<< (unsigned)time(0);
如果您之前已将 std::cout
设置为十六进制模式,则可以以十六进制打印。
例如:
#include <ctime>
#include <iostream>
#include <iomanip>
int main() {
std::cout << " decimal epoch time = " << time(0) << "\n";
std::cout << std::hex;
std::cout << "hexadecimal epoch time = " << time(0) << "\n";
}
我系统上的输出是:
decimal epoch time = 1528663129
hexadecimal epoch time = 5b1d8c59
这是我认为C++最烦人的特性I/O:要打印一个非默认格式的单项,你必须改变输出流的状态,这会影响后面所有的输出在那个流上。
如果你想以十六进制打印单个数据项(你可能在你的程序的前面已经做过),你可以这样做:
std::cout << "x = " << std::hex << x << std::dec << "\n";
这会将输出格式设置回十进制——不管它以前是什么。可能有一种复杂的方法可以将其恢复到原来的状态。