gpt4 book ai didi

c - 乘以十六进制 > uint32> 返回十六进制

转载 作者:行者123 更新时间:2023-11-30 19:31:59 25 4
gpt4 key购买 nike

我试图找到两个十六进制数(57c9f63e 和 16f77ed6)的乘积,并将它们打印为无符号 32 位 int,最后将该无符号 int 转换回十六进制。

我有一个简短的Python程序来将十六进制转换为十进制,我想我需要将十六进制转换为十进制,然后相乘并找到前面的项目。但是,我不知道从哪里开始以及是否需要结构来完成此操作。

任何指示将不胜感激。

最佳答案

在 C 语言中,您可以在乘法中使用十六进制数。十六进制表示不会造成任何问题。 (0x 基本上使其成为十六进制表示)。

代码将是这样的

#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
int main(){
uint32_t a = 0x57c9f63e ;
uint32_t b = 0x16f77ed6 ;
uint32_t res = a*b;
if( b && res/b != a){
printf("%s\n","overflow!!!" );
exit(1);
}
printf("0x%" PRIu32 "\n", res);
return 0;
}

是的,当我们使用uint32_t时会发生溢出。但uint64_t可以保存结果。

#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
int main(){
uint64_t a = 0x57c9f63e ;
uint64_t b = 0x16f77ed6 ;
uint64_t res = a*b;
if( b && res/b != a){
printf("%s\n","overflow!!!" );
exit(1);
}
printf("0x%" PRIu64 "\n", res);
return 0;
}

给出结果,0x567517894676077524

关于c - 乘以十六进制 > uint32> 返回十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47603955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com