Bạn cần phải thoát khỏi dấu gạch chéo trên phía trước của \x
:
sprintf(s1"DTLK\\x%x\xFF\xFF\xFF\xFF\xFF\xFF",i);
// ^------- Here
Tùy thuộc vào những gì đầu ra mà bạn muốn đạt được, bạn có thể cần phải thoát khỏi các dấu gạch chéo còn lại là tốt.
Hiện tại, đoạn mã tạo chuỗi sáu ký tự với mã 0xFF
. Nếu đây là những gì bạn muốn, đoạn mã của bạn đã hoàn thành. Nếu bạn muốn nhìn thấy một chuỗi các \xFF
literals, tức là một chuỗi trông giống như \x5\xFF\xFF\xFF\xFF\xFF\xFF
khi i == 5
, bạn cần phải thoát khỏi tất cả các dấu gạch chéo trong chuỗi:
sprintf(s1"DTLK\\x%x\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF",i);
// ^^^^^^^
Cuối cùng, nếu bạn muốn giá trị được định dạng như một mã hex hai chữ số ngay cả khi giá trị nhỏ hơn 16, sử dụng mã định dạng %02x
để cho biết sprintf
mà bạn muốn có số 0 đứng đầu.
Tôi nghĩ rằng anh ta muốn một cách khác: '\ xFF' nên mở rộng thành giá trị' 0xFF' trong khi sau 'DTLK' anh ta muốn có giá trị biến ... – glglgl
@glglgl Thật khó để nói chắc chắn, nhưng đó là lý do duy nhất tại sao tôi nghĩ OP sẽ yêu cầu cụ thể cho một giá trị hex. – dasblinkenlight
Một số người kết hợp các nhân vật với bản trình bày của họ; đó là lý do tại sao tôi nghĩ ngược lại. YMMV. – glglgl