Nawet po przeczytaniu standardowej dokumentacji, nadal nie mogę zrozumieć, jak dokładnie działają Ruby Array#pack
i String#unpack
. Oto przykład, który sprawia mi najwięcej problemów:Pakiet i rozpakowanie Ruby wyjaśnił
irb(main):001:0> chars = ["61","62","63"]
=> ["61", "62", "63"]
irb(main):002:0> chars.pack("H*")
=> "a"
irb(main):003:0> chars.pack("HHH")
=> "```"
Oczekiwałem, że obie te operacje zwrócą ten sam wynik: "abc". Każda z nich "zawiedzie" w inny sposób (nie jest to naprawdę porażka, ponieważ prawdopodobnie oczekuję niewłaściwej rzeczy). Tak więc dwa pytania:
- Jaka jest logika tych wyjść?
- Jak uzyskać pożądany efekt, tj. Przekształcenie ciągu liczb szesnastkowych w odpowiadający ciąg znaków. Jeszcze lepiej - biorąc pod uwagę liczbę całkowitą n, jak przekształcić ją na ciąg identyczny z plikiem tekstowym, który, gdy jest uważany za liczbę (powiedzmy, w edytorze szesnastkowym) jest równy n?
Dla ' 'formatów H'',' * 'nie działając w oczekiwany sposób zgodnie z dokumentacją. Inne znaki formatu zachowują się poprawnie, więc podejrzewam, że jest to błąd w używaniu przez Ruby '' H * ''. –