2010-07-18 9 views
5

Mô-đun struct hữu ích khi bạn đang cố gắng chuyển đổi dữ liệu sang và từ định dạng nhị phân. Tuy nhiên, gần đây tôi đã đi qua một đặc tả định dạng tập tin sử dụng the binary16 floating point format. Tôi đã xem qua tài liệu Python, nhưng không thể tìm thấy bất kỳ thứ gì có thể chuyển đổi sang và từ nó. Điều gì sẽ là cách tốt nhất để chuyển đổi dữ liệu này sang/từ Python nổi?binary16 trong Python

Trả lời

4

Bạn có thể làm điều đó xấp xỉ như bạn muốn làm điều đó trong C - tức là, tôi nghĩ rằng, gần như thế này ...:

def tofloat(b16): 
    sign = -1 if b16 & 0x8000 else +1 
    expo = (b16 & 0x7C00) >> 10 
    prec = b16 & 0x03FF 
    if expo == 0: 
    return sign * (2.0 ** -24) * prec 
    elif expo == 0x1F: 
    return sign * float('inf') 
    prec |= 0x0400 
    return sign * (2.0 ** (expo - 25)) * prec 
1

Tìm kiếm nhanh trên Google được bật lên http://packages.python.org/bigfloat/ cho biết nó có ngữ cảnh để thao tác binary16 số dấu phẩy động. Mặc dù vậy, tôi không quen với gói phần mềm, vì vậy tôi không thể cho bạn biết bất cứ điều gì về cách sử dụng nó (ít nhất, không có gì nhiều hơn bạn có thể đọc chính mình trong tài liệu).

2

This guy's blog post cho phép triển khai ở cả hai và trăn. Anh ấy sử dụng mô-đun struct, sau đó giải mã theo cách thủ công. Nó không phải là một chuyển đổi phức tạp.