Go 如何将unix timestap转换为十六进制
我有一段C代码,我正试图翻译它:Go 如何将unix timestap转换为十六进制,go,time,Go,Time,我有一段C代码,我正试图翻译它: #include <sys/time.h> #include <sys/types.h> #include <inttypes.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int main() { s
#include <sys/time.h>
#include <sys/types.h>
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int main()
{
struct timeval started;
int64_t ms;
gettimeofday(&started, NULL);
ms = (int64_t) started.tv_sec * 1000 + started.tv_usec / 1000;
printf("Time: %011"PRIx64"\n", ms);
return 0;
}
然而,我很难将这个数字转换成十六进制,这有点像我的C代码的输出。我确实发现了如何用这个来解码十六进制时间戳。有人能给我指出正确的方向吗?您可以使用“%XF”在goaling中打印十六进制。像下面这样
包干管
进口
fmt
时间
func main{
fmt.PrintfUnix时间(毫秒):%XF\n,Time.Now.UnixNano/1000000
}
操场链接。认为这应该是正确的解决方案:
package main
import (
"fmt"
"time"
)
func main() {
unix_time_ms := 1589664726314
fmt.Printf("Hex Unixtime in MS: %x ,should equal 1721f66bd2a\n", unix_time_ms)
}
在C中,它应与以下内容匹配:
int main()
{
int64_t unix_time_ms;
unix_time_ms = 1589664726314;
printf("Hex Unixtime in MS: %011"PRIx64"\n", unix_time_ms);
return 0;
}
你看过s上的维基百科页面的文档了吗。然后就是那个穿上的。然后,长度为11且填充为零的小写十六进制表示形式为:%011x。此答案不正确。F和X不能混在一起。您还忽略了长度、零填充和大小写。@Marc我添加了一个游乐场链接,清楚地显示了F和X的混合。它们在运行时混合在一起,但最终得到的是123234F,其中尾随的F不是数字的一部分,只是您要打印的F。
int main()
{
int64_t unix_time_ms;
unix_time_ms = 1589664726314;
printf("Hex Unixtime in MS: %011"PRIx64"\n", unix_time_ms);
return 0;
}