gpt4 book ai didi

C++ 从函数返回无符号字节

转载 作者:行者123 更新时间:2023-11-30 05:00:29 24 4
gpt4 key购买 nike

我正在尝试显示函数中的无符号字节。我在函数中返回的字节与我在 CLI 中显示它时看到的值不同。我使用以下代码:

#include <iostream> 
#include <bitset>

typedef unsigned char Byte;
typedef unsigned int Uint;

Byte makeMask(Uint pos) {
switch (pos) {
case 0:
return 10000000;
case 1:
return 01000000;
case 2:
return 00100000;
case 3:
return 00010000;
case 4:
return 00001000;
case 5:
return 00000100;
case 6:
return 00000010;
case 7:
return 00000001;
}
}

int main() {
//Variabelen aanmaken
Uint pos;
Byte source;

//Om een int tussen 0 en 7 blijven vragen totdat deze is ingevoerd
do {
std::cout << "Vul een getal tussen de 0 en de 7 in: ";
std::cin >> pos;
} while (pos < 0 || pos > 7);

//Om een source mask vragen
std::cout << "Vul een source in: ";
std::cin >> source;

//Functies callen en printen
Byte magic = makeMask(pos);
std::bitset < 8 > meme(magic);
std::cout << "Getrokken mask: " << meme << std::endl;

std::cout << "Getrokken mask: " << makeMask(pos) << std::endl;

return 0;
}

我的输出如下:

kevin@ubuntu:~/C++_Opdrachten/Week1/Week1_Op7$ ./a.out 
Vul een getal tussen de 0 en de 7 in: 6
Vul een source in: 11110000
Getrokken mask: 00001000
Getrokken mask:

为什么第一种方法中的位在错误的位置,为什么使用第二种方法时看不到任何输出?

最佳答案

您可能希望简化您的 makeMask 以使用移位,而不是 switch:

uint8_t makeMask(size_t bit_position)
{
return 0x80 >> bit_position;
}

有许多方法可以用二进制显示数字。在 Internet 上搜索“c++ 二进制到文本”。

编辑 1:
您可以使函数内联 或用单个语句替换函数调用。这比调用单行函数更有效。

关于C++ 从函数返回无符号字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50747736/

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