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

EBCDIC sang ASCII không hoạt động bình thường

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 06:18:00 26 4
mua khóa gpt4 Nike

Tôi phải xử lý tập tin từ máy tính lớn. Có một số văn bản không phải tiếng Latinh trong tệp. Tôi phải xử lý một số ký tự không phải tiếng Latinh là ký tự không hợp lệ. Vì máy tính lớn được EBCDIC định dạng mã hóa dữ liệu, vì vậy tôi phải chuyển đổi nó thành ASCII để xác minh.

tôi đã sử dụngcái nàytừ EBCDIC 转换为 ASCII mã số. Nhưng khi tôi nhập trình thực thi cho ví dụ, những gì tôi nhận được là Xin chào] thay vì Xin chào!. Tôi cũng dựa vào EBCDIC table Đã kiểm tra đầu vào ví dụ.

Tôi cũng sử dụng cái này Một bảng tra cứu được tạo ra nhưng kết quả vẫn như nhau.

  • Tôi đã làm gì sai à? Hay là tra cứu bảng có lỗi?
  • Có cách nào khác để làm điều này mà không cần chuyển đổi sang ASCII Trong trường hợp xác thực các ký tự không hợp lệ?

Mã mẫu như sau...

#include 

const tĩnh không dấu char e2a[256] = {
0, 1, 2, 3.156, 9.134.127.151.141.142, 11, 12, 13, 14, 15,
16, 17, 18, 19.157.133, 8.135, 24, 25.146.143, 28, 29, 30, 31,
128.129.130.131.132, 10, 23, 27.136.137.138.139.140, ​​5, 6, 7,
144.145, 22.147.148.149.150, 4.152.153.154.155, 20, 21.158, 26,
32,160,161,162,163,164,165,166,167,168, 91, 46, 60, 40, 43, 33,
38,169,170,171,172,173,174,175,176,177, 93, 36, 42, 41, 59, 94,
45, 47,178,179,180,181,182,183,184,185,124, 44, 37, 95, 62, 63,
186,187,188,189,190,191,192,193,194, 96, 58, 35, 64, 39, 61, 34,
195, 97, 98, 99.100.101.102.103.104.105.196.197.198.199.200.201,
202,106,107,108,109,110,111,112,113,114,203,204,205,206,207,208,
209.126.115.116.117.118.119.120.121.122.210.211.212.213.214.215,
216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,
123, 65, 66, 67, 68, 69, 70, 71, 72, 73,232,233,234,235,236,237,
125, 74, 75, 76, 77, 78, 79, 80, 81, 82,238,239,240,241,242,243,
92,159, 83, 84, 85, 86, 87, 88, 89, 90,244,245,246,247,248,249,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,250,251,252,253,254,255
};

void ebcdicToAscii (không dấu char *s)
{
trong khi (*s)
{
*s = e2a[(int) (*s)];
s++;
}
}

int chính (void) {
ký tự không dấu str[] = "\xc8\x85\x93\x93\x96\x40\xa3\x88\x85\x99\x85\x5a";
ebcdicToAscii (str);
printf ("%s\n", str);
return 0;
}

Cảm ơn trước.

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

Bảng tra cứu của bạn sai. Nó chuyển đổi giá trị EBCDIC 0x5A ("!") thành (thập phân) 93. Số thập phân ASCII 93 là "]". Vì vậy, ứng dụng của bạn hoạt động tốt, nó xuất ra ký tự ']'. Bạn cho biết rằng bạn đang sử dụng cp500 Ví dụ python tạo bảng tra cứu có mã IBM trang 500. Trang mã này ánh xạ giá trị EBCDIC 0x5A tới ký tự "]". Nếu bạn muốn sử dụng bộ ký tự được liệt kê đâyĐối với bảng tra cứu của bạn, mọi thứ sẽ ổn.

Về việc c - EBCDIC to ASCII không hoạt động, 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/41394698/

26 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
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