Re: Routines for review: Hex <-> String
Re: Routines for review: Hex <-> String
- Subject: Re: Routines for review: Hex <-> String
- From: Paul Skinner <email@hidden>
- Date: Sun, 19 Jan 2003 11:49:01 -0500
On Saturday, January 18, 2003, at 06:08 AM, julifos wrote:
snip
I like this.
set hex to stringtoHex("hello world")
-->{"68", "65", "6c", "6c", "6f", "20", "77", "6f", "72", "6c", "64"}
set AppleScript's text item delimiters to "%"
HexToString("%" & hex)
-->"hello world"
set AppleScript's text item delimiters to ""
on stringtoHex(s)
words 2 thru ((length of s) + 1) of (do shell script "echo " & s & " |
hexdump -C")
end stringtoHex
Very short code! But this routine is very slow and it won't handle
large
strings, unless you say:
text from word 2 of x to word y of x
(quick note off-topic: I've seen that
text from character 1 of x to character 5 of x
If much quicker than
characters 1 thru 5 of x as string
)
interesting. I'll test.
on HexToString(h)
do shell script "echo " & h & " | perl -ple
's/%([0-9a-fA-F]{2})/chr(hex($1))/ge' "
end HexToString
Hmmm... This doesn't work for me... Do I need install something? It
returns:
--> "h656c6c6f20776f726c64"
JJ
Did you call it like so...
set AppleScript's text item delimiters to "%"
HexToString("%" & hex)
and see below.
And On Sunday, January 19, 2003, at 07:03 AM, Axel Luttgens wrote:
Paul Skinner wrote:
Has kindly pointed out, off list, that my stringToHex fails with more
than 16 characters. Doh!
Sooo...
[snip]
: ( there goes my one-liner.
From another thread on this list:
on HexString2(AString)
text 1 through -3 of (do shell script
"echo '" & AString & "' | hexdump -e '1/1 \"X\"'")
end HexString2
The one-liner way is not gone :-)
I wondered if there could be a better choice for the arguments of
hexdump.
Axel
Nice. It also needs a -v or it'll swap runs of characters into
asterisks and slashes. I couldn't (still can't if the OP of this code
is known.) follow the formatting instructions in the man page for
fprintf. Documentation is nice, wish I could comprehend the meaning.
So...
set txt to "Best of all possible worlds."
set hex to StringToHex(txt)
set str to HexToString(hex)
on StringToHex(str)
text 1 through -3 of (do shell script "echo '" & str & "' | hexdump -v
-e '1/1 \"X\"'")
end StringToHex
on HexToString(hex)
do shell script "echo " & hex & " | perl
-ple's/([0-9a-fA-F]{2})/chr(hex($1))/ge' "
end HexToString
StringToHex still has limits. It can't deal with >32k of text.
Somewhere in the execution of the do shell script. So if you need to
hex your logs you're going to have to tweek it.
--
Paul Skinner
_______________________________________________
applescript-users mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/applescript-users
Do not post admin requests to the list. They will be ignored.