cuốn sách gpt4 ai đã làm

c++ - 如何正确解释数字(十六进制、十进制、十进制)

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 08:12:15 27 4
mua khóa gpt4 Nike

Tôi đang cố gắng viết một chương trình lấy đầu vào ở dạng hex, bát phân và thập phân, lưu trữ chúng trong các biến số nguyên và xuất chúng cùng với việc chuyển đổi sang dạng thập phân. Ví dụ:

Người dùng nhập: 0x43, 0123, 65

Đầu ra chương trình:

Hệ thập lục phân 0x43 chuyển đổi thành 67 thập phân
0123 bát phân chuyển đổi thành 83 thập phân
65 thập phân chuyển đổi thành 65 thập phân

Rõ ràng là tôi cần một cách để diễn giải những con số này, nhưng tôi không chắc chắn bằng cách nào. Tôi đã thử nhiều cách tiếp cận khác nhau như đọc chúng thành hàm và chuyển đổi chúng thành chuỗi và ngược lại (xem ví dụ về mã đây), nhưng việc diễn giải các số luôn yêu cầu chuyển đổi sang một số định dạng làm mất đi dữ liệu đầu vào ban đầu.

Điều duy nhất tôi có thể nghĩ đến là nạp chồng toán tử >> đọc từng ký tự một và nếu nó thấy 0x hoặc 0 ở đầu đầu vào thì nó sẽ lưu toàn bộ đầu vào vào một chuỗi trước khi đọc số nguyên. Sau đó, chương trình bằng cách nào đó sẽ phải xác định bộ điều khiển chính xác trong quá trình xuất.

Không chắc có cách nào dễ dàng hơn để thực hiện việc này hay không, mọi trợ giúp đều sẽ được đánh giá cao.

EDIT: Điều này đã được giải quyết nhưng tôi quyết định đăng mã trong trường hợp có ai quan tâm.

#include "std_lib_facilities.h"

void number_sys(chuỗi số, chuỗi& s)
{
if(num[0] == '0' && (num[1] != 'x' && num[1] != 'X')) s = "bát phân";
else if(num[0] == '0' && (num[1] == 'x' || num[1] == 'X')) s = "thập lục phân";
else s = "thập phân";
}

int main()
{
cout << "Nhập số ở dạng hex, dec hoặc oct. Sử dụng 0xx để hủy.\n";
chuỗi a;

while(cin >> a){
if(a == "0xx")break;
chuỗi không giống nhau;
number_sys(a, atype);

int anum = strtol(a.c_str(), NULL, 0);

cout << a << setw(20-a.length()) << atype << setw(20) << "chuyển đổi thành" << setw(10)
<< anum << setw(10) << "thập phân\n";
}

keep_window_open();
}

câu trả lời hay nhất

Hãy xem hàm strtol.

char * args[3] = {"0x43", "0123", "65"};
vì (int i = 0; i < 3; ++i) {
giá trị int dài = strtol(args[i], NULL, 0);
printf("%s chuyển đổi thành %d thập phân\n", args[i], value);
}

Đầu ra:

0x43 chuyển đổi thành 67 thập phân
0123 chuyển đổi thành 83 thập phân
65 chuyển đổi thành 65 thập phân

Về c++ - cách diễn giải chính xác các số (hex, thập phân, thập phân), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/1195979/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress