Làm thế nào để sử dụng hex () mà không có 0x trong Python?


92

Các hex()chức năng trong python, đặt các nhân vật hàng đầu 0xở phía trước của số. Có anyway để nói với nó KHÔNG để đặt chúng? Như vậy 0xfa230sẽ được fa230.

Mã là

import fileinput
f = open('hexa', 'w')
for line in fileinput.input(['pattern0.txt']):
   f.write(hex(int(line)))
   f.write('\n')

2
Bạn có thể cắt miếng 0x.
Ashwini Chaudhary

3
@AshwiniChaudhary tôi nghĩ anh ấy về cơ bản được hỏi làm thế nào để cắt các 0x
Mine

Câu trả lời:


185
>>> format(3735928559, 'x')
'deadbeef'

34
Gotta thích deadbeefví dụ ole . Và format()là cách tốt nhất để làm điều này.
Martijn Pieters

58

Sử dụng mã này:

'{:x}'.format(int(line))

nó cũng cho phép bạn chỉ định một số chữ số:

'{:06x}'.format(123)
# '00007b'

Để sử dụng Python 2.6

'{0:x}'.format(int(line))

hoặc là

'{0:06x}'.format(int(line))

8
Sử dụng format()chức năng dễ dàng hơn, bạn không sử dụng bất kỳ chức năng tạo khuôn mẫu nào, chỉ định dạng. Nếu tất cả mẫu của bạn chứa đều {:..}cho một giá trị, hãy chuyển đến format(value, '..').
Martijn Pieters

Sử dụng f.write('{:x}'.format(hex(int(line)))), nó nóiValueError: zero length field name in format
mahmood

formatcần một số nguyên, không phải một chuỗi:f.write('{:x}'.format(int(line)))
eumiro

17

Bạn chỉ có thể viết

hex(x)[2:]

để xóa hai ký tự đầu tiên.


3
Điều này không an toàn trước những thay đổi trong tương lai của đầu ra.
Stefano Sanfilippo

2
Cũng trong Python 2 với những con số dài nó tạo ra ouput lạ:>>> hex(3735928559)[2:] 'deadbeefL'
jamylak

@esseks: Tôi nghi ngờ họ sẽ thay đổi định dạng đầu ra trước khi phát hành chính tiếp theo. Dù sao thì bạn cũng sẽ có những điểm không tương thích khác.
Janus Troelsen

9
Điều này sẽ phá vỡ nếu xlà tiêu cực.
DSM


7

Định dạng chuỗi kiểu cũ:

In [3]: "%02x" % 127
Out[3]: '7f'

Phong cách mới

In [7]: '{:x}'.format(127)
Out[7]: '7f'

Sử dụng các chữ cái viết hoa làm ký tự định dạng sẽ mang lại hệ thập lục phân viết hoa

In [8]: '{:X}'.format(127)
Out[8]: '7F'

Tài liệu ở đây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.