[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Inspecting integer, float values from hexl-mode

From: Alberto Luaces
Subject: Re: Inspecting integer, float values from hexl-mode
Date: Fri, 11 Feb 2011 17:02:37 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

Stefan Monnier writes:

>>>>>> "Alberto" == Alberto Luaces writes:
>> Hello,
>> I'm inspecting a binary file with hexl-mode. I need to select some bytes
>> and then be able to interpret their value as integer, or as float. I was
>> wondering if there is a method for doing this since it seems that
>> hexl-mode doesn't do that by default.
> Not that I know, no.
>> In case there isn't one, I suppose I would have to code my method
>> calling the external `od' program to interpret the values.
> That sounds like a reasonably straightforward way to do it, yes.
>> The problem here would be how to compute the offset for the binary
>> file that the selected region in emacs is representing.
> The function hexl-current-address should do just that.
> It would probably make sense to try and include such a feature in
> hexl.el, so I encourage you to post your code for inclusion once you
> have it working (and send it along for help if you have trouble getting
> it to work, of course).

I have gone the route of using `od' since it simplifies a lot the
interpretation of floating point types. So far I have written a small
function that reads floats, but it's trivial to modify in order to show
doubles, integers, chars... just by passing the arguments to "-t" and
"-N" as an argument:

Comments on style and correctness are welcome.

--8<---------------cut here---------------start------------->8---

(defun hexl-interpret-float-at-point ()
  (let ((out-buffer "*hexloutput*"))

    ;; Calls od

     (number-to-string (hexl-current-address))

    ;; Reads the number from the output buffer

      (set-buffer out-buffer)
      (goto-char (point-min))
      (re-search-forward "[^[:space:]]+[[:space:]]+\\([^[:space:]]+\\)")
      (message (format "%s" (match-string 1)))

    (kill-buffer out-buffer)

--8<---------------cut here---------------end--------------->8---


reply via email to

[Prev in Thread] Current Thread [Next in Thread]