Câu trả lời:
Sử dụng:
#include <iostream>
...
std::cout << std::hex << a;
Có nhiều tùy chọn khác để kiểm soát định dạng chính xác của số đầu ra , chẳng hạn như các số 0 đứng đầu và chữ hoa / chữ thường.
ios::fmtflags f(cout.flags());
và khôi phục nó với out.flags(f);
.
std::cout.flags(f);
Để thao tác luồng để in theo hệ thập lục phân, hãy sử dụng trình hex
thao tác:
cout << hex << a;
Theo mặc định, các ký tự thập lục phân được xuất thành chữ thường. Để thay đổi nó thành chữ hoa, hãy sử dụng trình uppercase
thao tác:
cout << hex << uppercase << a;
Để sau đó thay đổi đầu ra trở lại chữ thường, sử dụng trình nouppercase
thao tác:
cout << nouppercase << b;
nouppercase
sẽ thay đổi đầu ra trở lại thập phân?
Tôi hiểu đây không phải là những gì OP yêu cầu, nhưng tôi vẫn nghĩ rằng thật đáng để chỉ ra cách thực hiện với printf. Tôi hầu như luôn thích sử dụng nó hơn std :: cout (ngay cả khi không có nền C trước đó).
printf("%.2X", a);
'2' xác định độ chính xác, 'X' hoặc 'x' xác định trường hợp.
printf("hello\n")
tương đương với fprintf(stdout, "hello\n")
. Hữu ích hơn, bạn có thể chuyển stdout
(hoặc stdin
, hoặc stderr
) cho một hàm có FILE*
đối số.
Có nhiều loại cờ và mặt nạ khác nhau mà bạn có thể sử dụng. Vui lòng tham khảo http://www.cplusplus.com/reference/iostream/ios_base/setf/ để biết thêm thông tin.
#include <iostream>
using namespace std;
int main()
{
int num = 255;
cout.setf(ios::hex, ios::basefield);
cout << "Hex: " << num << endl;
cout.unsetf(ios::hex);
cout << "Original format: " << num << endl;
return 0;
}
std::hex
giúp bạn định dạng hex, nhưng nó là một tùy chọn trạng thái, có nghĩa là bạn cần lưu và khôi phục trạng thái hoặc nó sẽ ảnh hưởng đến tất cả đầu ra trong tương lai.
Việc chuyển đổi trở lại std::dec
chỉ thực sự tốt nếu đó là nơi các cờ trước đó, có thể không phải là trường hợp, đặc biệt nếu bạn đang viết thư viện.
#include <iostream>
#include <ios>
...
std::ios_base::fmtflags f( cout.flags() ); // save flags state
std::cout << std::hex << a;
cout.flags( f ); // restore flags state
Điều này kết hợp câu trả lời và thông tin của Greg Hewgill từ một câu hỏi khác .
Sử dụng std::uppercase
và std::hex
định dạng biến số nguyên a
sẽ được hiển thị ở định dạng thập lục phân.
#include <iostream>
int main() {
int a = 255;
// Formatting Integer
std::cout << std::uppercase << std::hex << a << std::endl; // Output: FF
std::cout << std::showbase << std::hex << a << std::endl; // Output: 0XFF
std::cout << std::nouppercase << std::showbase << std::hex << a << std::endl; // Output: 0xff
return 0;
}
cout << hex << a << dec;
thay đổi lại.