উত্তর:
এই দুটি ফাংশন (সাধারণত অন্যান্য ভাষায় উপলভ্য) সংজ্ঞা দিন:
chr() {
[ "$1" -lt 256 ] || return 1
printf "\\$(printf '%03o' "$1")"
}
ord() {
LC_CTYPE=C printf '%d' "'$1"
}
ব্যবহার:
chr 65
A
ord A
65
printf "\\$(printf '%03o' "$1")"
, '%03o'
, LC_CTYPE=C
এবং একক উদ্ধৃতি "'$1"
Do?
আপনি সম্পূর্ণ সেটটি দেখতে পাবেন এর সাথে:
$ man ascii
আপনি অষ্টাল, হেক্স এবং দশমিক মধ্যে সারণী পাবেন।
আপনি যদি এটি UTF-8 টি অক্ষরে প্রসারিত করতে চান:
$ perl -CA -le 'print ord shift' 😈
128520
$ perl -CS -le 'print chr shift' 128520
😈
সহ bash
, ksh
বা zsh
বিল্টিনগুলি:
$ printf "\U$(printf %08x 128520)\n"
😈
iceweasel
উপর Debian sid
। আইসউইজেলের ওয়েব কনসোল দ্বারা নিশ্চিত হওয়া ফন্টটি হ'ল "দেজাভু সানস" এবং আমার কাছে টিটিএফ-দেজাভু টিটিএফ-দেজাভু-কোর টিটিএফ-দেজাভু-অতিরিক্ত প্যাকেজ ইনস্টল করা আছে যা দেবান থেকে দেজভু- ফন্টস.আর.এস.এর উপরের
এটি ভাল কাজ করে,
echo "A" | tr -d "\n" | od -An -t uC
echo "A" ### Emit a character.
| tr -d "\n" ### Remove the "newline" character.
| od -An -t uC ### Use od (octal dump) to print:
### -An means Address none
### -t select a type
### u type is unsigned decimal.
### C of size (one) char.
ঠিক সমান:
echo -n "A" | od -An -tuC ### Not all shells honor the '-n'.
echo -n
নতুন লাইনের প্রয়োজনীয়তা tr -d "\n"
echo
, ইউনিক্সের সাথে সঙ্গতিপূর্ণ ইকোগুলিতে নয়। printf %s A
পোর্টেবল এক হবে।
আমি সহজ (এবং মার্জিত?) বাশ সমাধানের জন্য যাচ্ছি:
for i in {a..z}; do echo $(printf "%s %d" "$i" "'$i"); done
কোনও স্ক্রিপ্টের জন্য আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:
CharValue="A"
AscValue=`printf "%d" "'$CharValue"
CharValue এর আগে একক উদ্ধৃতি লক্ষ্য করুন। এটা বাধ্য ...
printf "%d"
।
ctbl() for O in 0 1 2 3
do for o in 0 1 2 3 4 5 6 7
do for _o in 7 6 5 4 3 2 1 0
do case $((_o=(_o+=O*100+o*10)?_o:200)) in
(*00|*77) set "${1:+ \"}\\$_o${1:-\"}";;
(140|42) set '\\'"\\$_o$1" ;;
(*) set "\\$_o$1" ;esac
done; printf "$1"; shift
done
done
eval '
ctbl(){
${1:+":"} return "$((OPTARG=0))"
set "" "" "${1%"${1#?}"}"
for c in ${a+"a=$a"} ${b+"b=$b"} ${c+"c=$c"}\
${LC_ALL+"LC_ALL=$LC_ALL"}
do while case $c in (*\'\''*) ;; (*) ! \
set "" "${c%%=*}='\''${c#*=}$1'\'' $2" "$3"
esac;do set "'"'\''\${c##*\'}"'$@"; c=${c%\'\''*}
done; done; LC_ALL=C a=$3 c=;set "" "$2 OPTARG='\''${#a}*("
while [ 0 -ne "${#a}" ]
do case $a in ([[:print:][:cntrl:]]*)
case $a in (['"$(printf \\1-\\77)"']*)
b=0;; (*) b=1
esac;; (['"$( printf \\200-\\277)"']*)
b=2;; (*) b=3
esac; set '"$(ctbl)"' "$@"
eval " set \"\${$((b+1))%"'\''"${a%"${a#?}"}"*}" "$6"'\''
a=${a#?};set "$((b=b*100+${#1}+${#1}/8*2)))" \
"$2(o$((c+=1))=$b)>=(d$c=$((0$b)))|"
done; eval " unset LC_ALL a b c;${2%?})'\''"
return "$((${OPTARG%%\**}-1))"
}'
প্রথম ctbl()
- সেখানে শীর্ষে - কেবল একবারে চালায়। এটি নিম্নলিখিত আউটপুট উত্পন্ন করে (যা sed -n l
মুদ্রণযোগ্যতার জন্য ফিল্টার করা হয়েছে ) :
ctbl | sed -n l
"\200\001\002\003\004\005\006\a\b\t$
\v\f\r\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\
\035\036\037 !\\"#$%&'()*+,-./0123456789:;<=>?" "@ABCDEFGHIJKLMNOPQRS\
TUVWXYZ[\\]^_\\`abcdefghijklmnopqrstuvwxyz{|}~\177" "\200\201\202\203\
\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\
\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\
\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\
\267\270\271\272\273\274\275\276\277" "\300\301\302\303\304\305\306\
\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\
\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\
\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\
\372\373\374\375\376\377"$
... যা সমস্ত 8-বিট বাইট (কম NUL
) , চারটি শেল-কোটেড স্ট্রিংগুলিতে 64৪-বাইট সীমানায় সমানভাবে বিভক্ত হয়। স্ট্রিং মত অকট্যাল রেঞ্জ সঙ্গে প্রতিনিধিত্ব করা যেতে পারে \200\1-\77
, \100-\177
, \200-\277
, \300-\377
, যেখানে বাইট 128 জন্য একটি জায়গা-ধারক হিসেবে ব্যবহার করা হয় NUL
।
ctbl()
অস্তিত্বের জন্য প্রথমটির পুরো উদ্দেশ্যটি সেই স্ট্রিংগুলি তৈরি করা যাতে তার পরে আক্ষরিক এম্বেড থাকা তাদের সাথে eval
দ্বিতীয় ctbl()
ক্রিয়াকলাপটি সংজ্ঞায়িত করা যায়। সেভাবে তাদের ফাংশনে রেফারেন্স দেওয়া যেতে পারে যখনই প্রতিটি বার প্রয়োজন হয় তাদের আবার তৈরি করার প্রয়োজন নেই। eval
দ্বিতীয় ctbl()
ক্রিয়াটি কখন সংজ্ঞায়িত করে প্রথমটি থেমে যাবে।
দ্বিতীয় ctbl()
ফাংশনের উপরের অর্ধেকটি এখানে বেশিরভাগ আনুষঙ্গিক - এটি কল করার সময় এটি যে কোনও বর্তমান শেল অবস্থাকে প্রভাবিত করতে পারে সেটিকে বহনযোগ্যভাবে এবং নিরাপদে সিরিয়ালাইজ করার জন্য ডিজাইন করা হয়েছে। উপরের লুপটি যে কোনও ভেরিয়েবলগুলি ব্যবহার করতে পারে তার মানগুলিতে যে কোনও উদ্ধৃতি উদ্ধৃত করবে এবং তার ফলাফলগুলি তার অবস্থানগত পরামিতিতে স্ট্যাক করবে।
প্রথম দুটি লাইন যদিও প্রথমে অবিলম্বে 0 ফিরে আসে এবং $OPTARG
একই হয়ে যায় যদি ফাংশনের প্রথম যুক্তিতে কমপক্ষে একটি অক্ষর না থাকে। এবং যদি এটি হয়, দ্বিতীয় লাইনটি তাত্ক্ষণিকভাবে তার প্রথম যুক্তিকে কেবল তার প্রথম চরিত্রের জন্য ছাঁটাই করে - কারণ ফাংশনটি কেবলমাত্র একটি সময়ে একটি অক্ষর পরিচালনা করে। গুরুত্বপূর্ণভাবে, এটি বর্তমান স্থানীয় প্রেক্ষাপটে এটি করে, যার অর্থ হ'ল যদি কোনও অক্ষর একক বাইটের চেয়ে বেশি সমন্বিত হতে পারে তবে শেলটি যদি সঠিকভাবে বহু-বাইট চরগুলি সমর্থন করে তবে এটি কোনও বাইটকে বাদ দেবে না এটির প্রথম যুক্তির প্রথম চরিত্র।
${1:+":"} return "$((OPTARG=0))"
set "" "" "${1%"${1#?}"}"
এটি যদি প্রয়োজন হয় তবে সেভ লুপটি করে এবং তারপরে এটি LC_ALL
ভেরিয়েবলকে বরাদ্দ করে প্রতিটি বিভাগের জন্য সি লোকালে বর্তমান লোকাল প্রসঙ্গে নতুন সংজ্ঞা দেয় । এই বিন্দু থেকে, একটি অক্ষর শুধুমাত্র একটি বাইট সমন্বয়ে গঠিত হতে পারে, এবং তাই যদি এর প্রথম যুক্তির প্রথম অক্ষরে একাধিক বাইট থাকে তবে এগুলি এখন প্রতিটি স্বতন্ত্র স্বতন্ত্র অক্ষর হিসাবে সম্বোধনযোগ্য হওয়া উচিত।
LC_ALL=C
একারণে চালানোর ক্রমের বিপরীতে ফাংশনের দ্বিতীয়ার্ধটি while
লুপ হয় এই কারণেই । বেশিরভাগ ক্ষেত্রে এটি সম্ভবত প্রতি কল প্রতি একবার সম্পাদিত হবে, তবে, যদি শেলটি ctbl()
সঠিকভাবে সংজ্ঞায়িত করা হয় তবে বহু-বাইট অক্ষর পরিচালনা করে, এটি লুপ হতে পারে ।
while [ 0 -ne "${#a}" ]
do case $a in ([[:print:][:cntrl:]]*)
case $a in (['"$(printf \\1-\\77)"']*)
b=0;; (*) b=1
esac;; (['"$( printf \\200-\\277)"']*)
b=2;; (*) b=3
esac; set '"$(ctbl)"' "$@"
নোট করুন যে উপরের $(ctbl)
কমান্ড প্রতিস্থাপনটি কেবল একবারই মূল্যায়ন করা হয় - eval
যখন ফাংশনটি প্রাথমিকভাবে সংজ্ঞায়িত করা হয় - এবং সেই চিরকালের পরে টোকেনটি শেলটির স্মৃতিতে সংরক্ষিত হিসাবে সেই কমান্ড প্রতিস্থাপনের আক্ষরিক আউটপুট দ্বারা প্রতিস্থাপিত হয়। দুটি case
প্যাটার্ন কমান্ড বিকল্পের ক্ষেত্রেও একই কথা । এই ফাংশনটি কখনও সাব-শেল বা অন্য কোনও কমান্ড কল করে না। এটি কখনই ইনপুট / আউটপুট পড়ার বা লেখার চেষ্টা করবে না (কিছু শেল ডায়াগনস্টিক বার্তার ক্ষেত্রে - যা সম্ভবত কোনও বাগ নির্দেশ করে) ।
এছাড়াও লক্ষ করুন যে লুপের ধারাবাহিকতার জন্য পরীক্ষাটি কেবল সহজ নয় [ -n "$a" ]
, কারণ আমার হতাশার কারণ হিসাবে আমি পেয়েছি যে কোনও কারণে bash
শেল রয়েছে:
char=$(printf \\1)
[ -n "$char" ] || echo but it\'s not null\!
but it's not null!
... এবং তাই আমি $a
প্রতিটি পুনরাবৃত্তির জন্য স্পষ্টভাবে 0 এর লেনকে 0 এর সাথে তুলনা করি যা অনির্বচনীয়ভাবেও আলাদাভাবে আচরণ করে (পড়ুন: সঠিকভাবে) ।
case
চেক আমাদের চার স্ট্রিং এবং দোকানে বাইট এর সেট একটি রেফারেন্স কোন অন্তর্ভুক্তির জন্য প্রথম বাইট $b
। এরপরে শেলের প্রথম চারটি অবস্থানগত পরামিতি set
এম্বেড করা স্ট্রিংগুলিতে eval
এবং ctbl()
পূর্বসূরীর দ্বারা লিখিত হয় ।
এরপরে, প্রথম যুক্তির যা কিছু অবশিষ্ট রয়েছে তা অস্থায়ীভাবে তার প্রথম চরিত্রটিতে ছাঁটা হয়েছে - যা এখন একক বাইট হওয়ার আশ্বাস দেওয়া উচিত। এই প্রথম বাইট স্ট্রিং যা মিলেছে এবং রেফারেন্স লেজ থেকে স্ট্রিপ একটি রেফারেন্স হিসাবে ব্যবহার করা হয় $b
হয় eval
একটি অবস্থানগত প্যারামিটার প্রতিনিধিত্ব করতে এসেছে তাই স্ট্রিং গত বাইট রেফারেন্স বাইট থেকে সবকিছু দূরে প্রতিস্থাপিত করা যেতে পারে 'ঘ। অন্যান্য তিনটি স্ট্রিং পুরোপুরি অবস্থানগত পরামিতিগুলি থেকে বাদ পড়েছে।
eval " set \"\${$((b+1))%"'\''"${a%"${a#?}"}"*}" "$6"'\''
a=${a#?};set "$((b=b*100+${#1}+${#1}/8*2)))" \
"$2(o$((c+=1))=$b)>=(d$c=$((0$b)))|"
এই মুহুর্তে বাইটের মান (মডুলো 64) স্ট্রিংয়ের লেন হিসাবে উল্লেখ করা যেতে পারে:
str=$(printf '\200\1\2\3\4\5\6\7')
ref=$(printf \\4)
str=${str%"$ref"*}
echo "${#str}"
4
মানটির উপর ভিত্তি করে মডিউলাসের সাথে পুনরায় মিলনের জন্য একটি সামান্য গণিত করা হয় $b
, প্রথম বাইটটি $a
স্থায়ীভাবে দূরে সরিয়ে দেওয়া হয় এবং লুপ পুনর্ব্যবহারের পূর্বে বর্তমান চক্রের আউটপুট একটি স্ট্যাকের মুলতুবিতে সংযোজন করা হয় লুপের পুনর্ব্যবহারের আগে তা $a
খালি কিনা তা যাচাই করার জন্য ।
eval " unset LC_ALL a b c;${2%?})'\''"
return "$((${OPTARG%%\**}-1))"
যখন $a
বাদ দিয়ে - স্পষ্টভাবে খালি, সমস্ত নাম ও রাষ্ট্র $OPTARG
যে ফাংশন তার মৃত্যুদন্ড অবশ্যই জুড়ে আক্রান্ত তা পূর্ববর্তী অবস্থায়ে পুনরুদ্ধার করা হয়েছে - - সেট এবং নাল না, সেট এবং নাল, বা সেট না কিনা - এবং আউটপুট সংরক্ষিত হয় থেকে $OPTARG
ফাংশনটি হিসাবে। প্রকৃত রিটার্ন মানটি তার প্রথম আর্গুমেন্টের প্রথম অক্ষরের মোট বাইটের তুলনায় একটাই কম - সুতরাং যে কোনও একক বাইট অক্ষর শূন্য ফিরে আসে এবং যে কোনও মাল্টি-বাইট চরটি শূন্যের চেয়ে বেশি ফিরে আসবে - এবং এর আউটপুট ফর্ম্যাটটি কিছুটা অদ্ভুত।
মান ctbl()
সংরক্ষণ করে $OPTARG
একটি বৈধ শেল গাণিতিক এক্সপ্রেশন যে, যদি মূল্যায়ন, একই সময়ে ফর্মের পরিবর্তনশীল নামের সেট হবে $o1
, $d1
, $o2
, $d2
দশমিকে এবং তার প্রথম আর্গুমেন্ট প্রথম অক্ষরটি সমস্ত নিজ নিজ বাইটের অকট্যাল মান, কিন্তু শেষ পর্যন্ত মোট নির্ণয় করা এটির প্রথম যুক্তিতে বাইট সংখ্যা। এটি লেখার সময় আমার মনে একটি নির্দিষ্ট ধরণের ওয়ার্কফ্লো ছিল এবং আমি মনে করি সম্ভবত কোনও বিক্ষোভের ব্যবস্থা রয়েছে।
আমি প্রায়শই এর getopts
মতো স্ট্রিং আলাদা করার কারণ খুঁজে পাই :
str=some\ string OPTIND=1
while getopts : na -"$str"
do printf %s\\n "$OPTARG"
done
s
o
m
e
s
t
r
i
n
g
আমি প্রতি লাইনে এটি কেবল ছাপার চেয়ে কিছুটা বেশি করছি, তবে কিছুই সম্ভব। যাই হোক, আমি না এখনো একটি পাওয়া getopts
সঠিকভাবে কি করতে হবে (ধর্মঘট যে - dash
'র getopts
এটা গৃহস্থালির কাজ দ্বারা গৃহস্থালি, কিন্তু bash
স্পষ্টভাবে না) :
str=ŐőŒœŔŕŖŗŘřŚśŜŝŞş OPTIND=1
while getopts : na -"$str"
do printf %s\\n "$OPTARG"
done| od -tc
0000000 305 \n 220 \n 305 \n 221 \n 305 \n 222 \n 305 \n 223 \n
0000020 305 \n 224 \n 305 \n 225 \n 305 \n 226 \n 305 \n 227 \n
0000040 305 \n 230 \n 305 \n 231 \n 305 \n 232 \n 305 \n 233 \n
0000060 305 \n 234 \n 305 \n 235 \n 305 \n 236 \n 305 \n 237 \n
0000100
ঠিক আছে. তাই আমি চেষ্টা করেছিলাম ...
str=ŐőŒœŔŕŖŗŘřŚśŜŝŞş
while [ 0 -ne "${#str}" ]
do printf %c\\n "$str" #identical results for %.1s
str=${str#?}
done| od -tc
#dash
0000000 305 \n 220 \n 305 \n 221 \n 305 \n 222 \n 305 \n 223 \n
0000020 305 \n 224 \n 305 \n 225 \n 305 \n 226 \n 305 \n 227 \n
0000040 305 \n 230 \n 305 \n 231 \n 305 \n 232 \n 305 \n 233 \n
0000060 305 \n 234 \n 305 \n 235 \n 305 \n 236 \n 305 \n 237 \n
0000100
#bash
0000000 305 \n 305 \n 305 \n 305 \n 305 \n 305 \n 305 \n 305 \n
*
0000040
এই জাতীয় ওয়ার্কফ্লো - বাইট / চরের ধরণের জন্য বাইট - এটি টিটি স্টাফ করার সময় আমি প্রায়শই প্রবেশ করি। ইনপুটটির শীর্ষ প্রান্তে আপনি চর মানগুলি পড়ার সাথে সাথে আপনার জানতে হবে এবং আপনার আকারগুলি (বিশেষত কলামগুলি গণনা করার সময়) প্রয়োজন এবং পুরো অক্ষর হওয়ার জন্য আপনার অক্ষর প্রয়োজন ।
এবং তাই এখন আমার আছে ctbl()
:
str=ŐőŒœŔŕŖŗŘřŚśŜŝŞş
while [ 0 -ne "${#str}" ]
do ctbl "$str"
printf "%.$(($OPTARG))s\t::\t$OPTARG\t::\t$?\t::\t\\$o1\\$o2\n" "$str"
str=${str#?}
done
Ő :: 2*((o1=305)>=(d1=197)|(o2=220)>=(d2=144)) :: 1 :: Ő
ő :: 2*((o1=305)>=(d1=197)|(o2=221)>=(d2=145)) :: 1 :: ő
Œ :: 2*((o1=305)>=(d1=197)|(o2=222)>=(d2=146)) :: 1 :: Œ
œ :: 2*((o1=305)>=(d1=197)|(o2=223)>=(d2=147)) :: 1 :: œ
Ŕ :: 2*((o1=305)>=(d1=197)|(o2=224)>=(d2=148)) :: 1 :: Ŕ
ŕ :: 2*((o1=305)>=(d1=197)|(o2=225)>=(d2=149)) :: 1 :: ŕ
Ŗ :: 2*((o1=305)>=(d1=197)|(o2=226)>=(d2=150)) :: 1 :: Ŗ
ŗ :: 2*((o1=305)>=(d1=197)|(o2=227)>=(d2=151)) :: 1 :: ŗ
Ř :: 2*((o1=305)>=(d1=197)|(o2=230)>=(d2=152)) :: 1 :: Ř
ř :: 2*((o1=305)>=(d1=197)|(o2=231)>=(d2=153)) :: 1 :: ř
Ś :: 2*((o1=305)>=(d1=197)|(o2=232)>=(d2=154)) :: 1 :: Ś
ś :: 2*((o1=305)>=(d1=197)|(o2=233)>=(d2=155)) :: 1 :: ś
Ŝ :: 2*((o1=305)>=(d1=197)|(o2=234)>=(d2=156)) :: 1 :: Ŝ
ŝ :: 2*((o1=305)>=(d1=197)|(o2=235)>=(d2=157)) :: 1 :: ŝ
Ş :: 2*((o1=305)>=(d1=197)|(o2=236)>=(d2=158)) :: 1 :: Ş
ş :: 2*((o1=305)>=(d1=197)|(o2=237)>=(d2=159)) :: 1 :: ş
লক্ষ্য করুন ctbl()
আসলে সংজ্ঞায়িত না $[od][12...]
ভেরিয়েবল - এটা যে কোনো অবস্থায় যে কোনো দীর্ঘস্থায়ী প্রভাব কখনোই রয়েছে কিন্তু $OPTARG
- কিন্তু শুধুমাত্র স্ট্রিং রাখে $OPTARG
যে ব্যবহার করা যেতে পারে তাদের সংজ্ঞায়িত করতে - যা হল কিভাবে আমি প্রতিটি গৃহস্থালির কাজ দ্বিতীয় কপি পেতে করে উপরে printf "\\$o1\\$o2"
কারণ আমি মূল্যায়ন প্রতিটি সময় তারা সেট করা হয় $(($OPTARG))
। কিন্তু আমি আরো একটি ক্ষেত্র দৈর্ঘ্য পরিবর্তক করার ঘোষণা করছি যেখানে আমি এটা করতে printf
এর %s
স্ট্রিং যুক্তি ফরম্যাট, এবং কারণ অভিব্যক্তি সবসময় একটি অক্ষর বাইট মোট সংখ্যা মূল্যায়ণ, আমি যখন আমি কি আউটপুট উপর পুরো চরিত্র পাবেন:
printf %.2s "$str"
[ "$(printf \\1)" ]|| ! echo but its not null!
ইতিমধ্যে উল্লেখ করুন , অর্থপূর্ণ মন্তব্য অনুশীলনের সাথে নিজেকে আরও ভালভাবে পরিচিত করতে নির্দ্বিধায় অনুভব করুন, যদি না আপনি এমন আসল প্রতিযোগিতার প্রস্তাব দেন ...?
sh
কমান্ড ভাষা। একই রকম bash
একটি বোর্ন আবার সুপারসেট, এবং বৃহত অংশে বহনযোগ্য বহনযোগ্য, স্ব প্রসারিতকরণ এবং নামধর্মীয় স্থানের যে কোনও ধরণের সম্মানজনক চরিত্রের আকারের জন্য উপরে বহন করা বেশিরভাগ যত্নের জন্য এক প্রিপিসিটাস প্রেরণা। bash
ইতিমধ্যে এর বেশিরভাগটি হ্যান্ডেল করা উচিত, তবে c
ভাষাটি printf
ছিল এবং সম্ভবত এটির উপরে প্রদত্ত সামর্থ্যের ঘাটতি রয়েছে।
শেল স্ক্রিপ্ট নয়, তবে কাজ করে
awk 'BEGIN{for( i=97; i<=122;i++) printf "%c %d\n",i,i }'
নমুনা আউটপুট
xieerqi:$ awk 'BEGIN{for( i=97; i<=122;i++) printf "%c %d\n",i,i }' | head -n 5
a 97
b 98
c 99
d 100
e 101
konsole
xxd<press enter>
<SHIFT+INSERT><CTRL+D>
আপনি কিছু পেতে:
mariank@dd903c5n1 ~ $ xxd
û0000000: fb
আপনি চেনেন যে চিহ্নটি আপনি পেস্ট করেছেন তাতে হেক্স কোড রয়েছে 0xfb
"'A"
পক্ষান্তরে যদি আপনি ব্যবহার সঠিক"A"
এটা বলবেঃA: invalid number
। মনে হচ্ছে এটি প্রিন্টফের দিকে করা হয়েছে (অর্থাত্ শেলের মধ্যে,"'A"
এটি আসলে ২ টি অক্ষর, ক'
এবং এ রয়েছেA
। এগুলি প্রিন্টফের কাছে প্রেরণ করা হয়েছে And দশমিক ধন্যবাদ হিসাবে'%d'
।'Ox%x'
এটি হেক্সায় দেখানোর'0%o'
জন্য বা এটি অক্টালটিতে ব্যবহার করার জন্য ব্যবহার করুন ))