2017-11-30 19 views
6

Có thể chuỗi liên tục như "foo" "\x01" "bar" được viết dưới dạng một chuỗi ký tự đơn (trong khi vẫn giữ ký hiệu thập lục phân) không? Với "foo\x01bar" trình tự thoát dường như được hiểu là \x01ba vì tôi nhận được cảnh báo "chuỗi thoát hex ra khỏi phạm vi".Tách chuỗi thoát thập lục phân theo chuỗi

Trả lời

3

"foo" "\x01" "bar" chuỗi ký tự.

Chuẩn C cho biết trình tự thoát thập lục phân là chuỗi ký tự dài nhất có thể cấu thành chuỗi thoát. Nếu không có kết nối rõ ràng (đó là cách giải quyết chung cho vấn đề này), trình biên dịch phân tích cú pháp \x01ba rõ ràng nằm ngoài phạm vi.

+0

Maybe "nguyên tử" chuỗi chữ là một mô tả tốt hơn. –

+0

@AugustKarlstrom: Thật không may là chuỗi số thập lục phân thoát được * xác định * dưới dạng bất kỳ số chữ số thập lục phân hợp lệ nào sau sau '\ x'. Trái lại, một chuỗi * octal * -capecape ('\ 001') không dài hơn ba chữ số bát phân (* 6.4.4.4 Hằng số ký tự *). Vì vậy, không, hoặc bạn cần phải "chơi thủ đoạn" với ký hiệu hex, hoặc bạn đi cho bát phân (mà không phải là * rằng * xấu một khi bạn đã quen với nó). – DevSolar

1

Làm thế nào về "foo\x01\142ar"? Đó có phải là gian lận không?

1

Một giải pháp khác là chỉ cần viết các ký tự thoát trong bát phân, thay vì thập lục phân

"foo\1bar" 

và không nhập nhằng thêm ...

+0

(và nếu "bar" là một số, hãy sử dụng tối đa 3 chữ số bát phân, như '\ 001') –

Các vấn đề liên quan