मैं किसी फ़ाइल में प्रत्येक वर्ण के ASCII मान (संख्यात्मक) कैसे प्रिंट कर सकता हूं?


11

मैं टेक्स्ट फ़ाइल में प्रत्येक वर्ण के संख्यात्मक ASCII मान कैसे प्रिंट कर सकता हूं। जैसे cat, लेकिन केवल ASCII मान दिखाना ... (हेक्स या दशमलव ठीक है)।

Apple (लाइन फीड के साथ) शब्द वाली फ़ाइल के लिए उदाहरण आउटपुट जैसा दिख सकता है:

065 112 112 108 101 013 004

जवाबों:


17

उस के लिए मानक कमांड है od, ऑक्टल डंप के लिए (हालांकि विकल्पों के साथ, आप ऑक्टल से दशमलव या हेक्साडेक्टिक में बदल सकते हैं ...:

$ echo Apple | od -An -vtu1
  65 112 112 108 101  10

ध्यान दें कि यह फ़ाइल में प्रत्येक बाइट के बाइट मान को आउटपुट करता है। इसका ASCII या किसी अन्य वर्ण सेट से कोई लेना-देना नहीं है।

यदि फ़ाइल में दिए गए वर्ण सेट में A है, और आप 65 देखना चाहते हैं, क्योंकि वह ASCII में A के लिए उपयोग किया जाने वाला बाइट है, तो आपको यह करना होगा:

< file iconv -f that-charset -t ascii | od -An -vtu1

पहले उस फ़ाइल को एससीआई में परिवर्तित करें और फिर संबंधित बाइट मानों को डंप करें। उदाहरण के लिए Apple<LF>EBCDIC- यूके 193 151 151 147 133 37( 301 227 227 223 205 045ओक्टल में) होगा।

$ printf '\301\227\227\223\205\045' | iconv -f ebcdic-uk -t ascii | od -An -vtu1
  65 112 112 108 101  10

14

hexdump, od, xxd, या $YOUR_FAVORITE_LANGUAGEयह सब कर सकते हैं।

% echo Apple | hexdump -C
00000000  41 70 70 6c 65 0a                                 |Apple.|
00000006
% echo Apple | perl -ne 'printf "%vd\n", $_' 
65.112.112.108.101.10
% echo Apple | clisp <( echo '(print (mapcar #'\''char-code (coerce (read-line *standard-input*) '\''list)))' )
(65 112 112 108 101)
% 

बहुत बढ़िया जवाब, थैंक्यू। खासकर हेक्सडंप-सी। स्टीफ़न को केवल इसलिए सम्मानित किया गया क्योंकि उसका उत्तर भी हल हो गया था, और वह पहले (केवल एक बाल से) था, लेकिन दोनों ही उत्कृष्ट हैं।
मटल देव

फिर भी एक और आदेश:python -c "print open('file', 'rb').read().encode('hex')"
JFS

@JFSebastian बेहतरecho 'Apple' | python -c "import sys;print sys.stdin.read().encode('hex')"
हेमायल

@ हेमायल: गलत। यह विंडोज पर एक बाइनरी फ़ाइल को भ्रष्ट कर सकता है
jfs

@heemayl स्टड डिफ़ॉल्ट रूप से टेक्स्ट मोड का उपयोग करता है, जो newlines ( os.linesep-> '\n') का अनुवाद कर सकता है
jfs
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.