2012-03-28 13 views
8

Trong dự án java tôi đang làm việc, một số phần của dự án đã được viết trước đó bởi người khác trong C và bây giờ tôi cần phải viết giống nhau trong Java.Ý nghĩa của% 04X trong C và cách viết giống nhau trong java

Có một tuyên bố trong mã C để in vào một tập tin:

fprintf(ff, "%04X ", image[y*width+x]); 

Thứ nhất tôi không chắc chắn về ý nghĩa của %04X. Tôi nghĩ rằng nó có nghĩa là nếu image[i] có chiều dài năm hoặc nhiều hơn thì chỉ in ra tối đa bốn chararacters. Để làm như vậy trong Java tôi nghĩ về mặt nạ giá trị sử dụng and hoạt động

image[i] & 0xFFFF 

Ai đó có thể xin vui lòng cho tôi biết ý nghĩa chính xác của %04X và làm thế nào để làm điều tương tự trong Java? Cảm ơn.

Trả lời

9

Giá trị được định dạng dưới dạng số nguyên hệ thập lục phân có bốn chữ số và số 0 đứng đầu. Java sử dụng cú pháp chuỗi định dạng giống nhau. Bạn có thể tìm thấy nó trong javaDoc of Formatter.

Trích:

'x', 'X'  integral The result is formatted as a hexadecimal integer 

Một chức năng có liên quan là

// create a String with the formatted value. 
String formatted = String.format("%04X ", image[y*width+x]); 

// write a formatted value to the console (*) 
System.out.printf("%04X ", image[y*width+x]); 

(*) - ghi nó vào PrintStreamSystem.out đó là thường giao diện điều khiển nhưng có thể được chuyển hướng đến một tệp hoặc cái gì khác

6

Cho phép phá vỡ các mã định dạng "%04X" thành phần riêng biệt của nó:

  • Các X có nghĩa là nó sẽ in một số nguyên, trong hệ thập lục phân, lớn X cho chữ thập lục phân lớn
  • Các 4 có nghĩa là số sẽ được in bên trái hợp lý với ít nhất bốn chữ số, các khoảng in nếu có ít hơn bốn chữ số
  • 0 có nghĩa là nếu có ít hơn bốn chữ số, nó sẽ in các số 0 hàng đầu.
1

X trong% 04X có nghĩa là hệ thập lục phân, với ABCDEF thay vì abcdef, và 04 phương tiện in tại nhất bốn chữ số, đệm với hàng đầu zero. Nó sẽ sử dụng nhiều chữ số hơn nếu cần.

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