gpt4 book ai didi

c - 如何使用位移位/掩码将二进制转换为十六进制

转载 作者:行者123 更新时间:2023-11-30 16:21:06 25 4
gpt4 key购买 nike

我正在尝试在名为 hexConversion() 的函数中将 32 位二进制数的字符串表示形式转换为表示该数字的十六进制值的字符串。为此,我只需要使用基本的 C 编程(for 循环、基本数组)和位移位/掩码。在此赋值中,使用的二进制表示形式是从另一个函数 binaryConversion() 作为数组返回的二进制表示形式。

我确实知道如何将 4 位值转换为其十六进制值,但我对如何实际将 32 位值分解为更小且更可行的 4 位值感到困惑。

例如,我可能想将 11111111111111111111111111111111 更改为 1111 1111 1111 1111 1111 1111 1111 1111,以便我能够使用每个 1111 分别将每个转换为 F

最佳答案

“Basic C”,但也许不是您正在寻找的......

binaryConversion(const char *bits, char *buf, int len) {
snprintf(buf, len, "%lx", strtol(bits, NULL, 2));
}

专门使用位掩码和移位的更复杂的解决方案可能是这样的......

binaryConversion(const char *bits, char *buf, int len) {
const char *xdig = "0123456789ABCDEF";
long val = strtol(bits, NULL, 2);
int i;
for (i = 0; i < 8; ++i) {
int nib = val & 0xf;
if (len > i) buf[i] = xdig[nib];
val = val << 4;
}
}

关于c - 如何使用位移位/掩码将二进制转换为十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54995378/

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