বাইট অ্যারে বেস 64 এ রূপান্তর করুন


10

আপনার মিশনটি এমন একটি ফাংশন / প্রোগ্রাম লিখতে হয় যা বাইটের অ্যারে (অর্থাত: 0 থেকে 255 থেকে পূর্ণসংখ্যার অ্যারে) কে বেস 64 এ রূপান্তর করে।

বিল্ট-ইন বেস 64 এনকোডার ব্যবহারের অনুমতি নেই।

প্রয়োজনীয় বেস 64 বাস্তবায়নটি হ'ল আরএফসি 2045 (("+", "/" ব্যবহার করে এবং "=" সহ বাধ্যতামূলক প্যাডিং)

সংক্ষিপ্ততম কোড (বাইটে) জয়!

উদাহরণ:

ইনপুট (ইনট অ্যারে): [99, 97, 102, 195, 169]

আউটপুট (স্ট্রিং): Y2Fmw6k=


এ কেমন প্রতিযোগিতা?
Cilan

কি বিল্ট-ইন করুন Base64- এনকোডার শুধুমাত্র বাইনারি টু টেক্সট এনকোডার বা পাশাপাশি পূর্ণসংখ্যার সাধিত ফাংশন আবরণ?
ডেনিস

1
স্পষ্ট করার জন্য: আমি কি কোনও ফাংশন ব্যবহার করতে পারি 1 2যা যুক্তির জন্য ফিরে আসে 66?
ডেনিস

1
বেস 64 এর 9 মানক বা 4 অ-মানক সংস্করণ রয়েছে। =প্যাডিংয়ের জন্য আপনার রেফারেন্সটি এটি নীচে নেমে এসেছে ৪ Which আপনি কোনটি চান? অথবা আপনি কি এমন একটি মান-বহনযোগ্য বৈকল্পিক চান যার সর্বাধিক লাইনের দৈর্ঘ্য নেই?
পিটার টেলর

আমি অনুমান করছি যে সে / সে আরএফসি 4648 দ্বারা নির্দিষ্ট "স্ট্যান্ডার্ড" বা মাইম-টাইপস, আরএফসি 2045 দ্বারা ব্যবহৃত সংস্করণ উল্লেখ করেছে These এগুলি আলাদা, সুতরাং স্পষ্টকরণ খুব কার্যকর হবে।
আধা-বহির্মুখী

উত্তর:


4

জাভাস্ক্রিপ্ট, 177 187 198 চরিত্র

function(d){c="";for(a=e=b=0;a<4*d.length/3;f=b>>2*(++a&3)&63,c+=String.fromCharCode(f+71-(f<26?6:f<52?0:f<62?75:f^63?90:87)))a&3^3&&(b=b<<8^d[e++]);for(;a++&3;)c+="=";return c}

লাইনব্রেকগুলি যুক্ত করার জন্য \r\n, প্রতিটি 76 76 তম বর্ণের পরে, কোডে 23 টি অক্ষর যুক্ত করুন:

function(d){c="";for(a=e=b=0;a<4*d.length/3;f=b>>2*(++a&3)&63,c+=String.fromCharCode(f+71-(f<26?6:f<52?0:f<62?75:f^63?90:87))+(75==(a-1)%76?"\r\n":""))a&3^3&&(b=b<<8^d[e++]);for(;a++&3;)c+="=";return c}

ডেমো কোড:

var encode = function(d,a,e,b,c,f){c="";for(a=e=b=0;a<4*d.length/3;f=b>>2*(++a&3)&63,c+=String.fromCharCode(f+71-(f<26?6:f<52?0:f<62?75:f^63?90:87))+(75==(a-1)%76?"\r\n":""))a&3^3&&(b=b<<8^d[e++]);for(;a++&3;)c+="=";return c};

//OP test case
console.log(encode([99, 97, 102, 195, 169])); // outputs "Y2Fmw6k=".

//Quote from Hobbes' Leviathan:
console.log(
 encode(
  ("Man is distinguished, not only by his reason, but by this singular passion from " +
   "other animals, which is a lust of the mind, that by a perseverance of delight " +
   "in the continued and indefatigable generation of knowledge, exceeds the short " +
   "vehemence of any carnal pleasure.")
  .split('').map(function(i){return i.charCodeAt(0)})
 )
);


চমৎকার সমাধান! আপনি কিছু ES6 বৈশিষ্ট্য ব্যবহার করে কিছু বাইট মুণ্ডন করতে পারেন এবং কিছু সদৃশ অপসারণ: মন্তব্য সহ সংক্ষিপ্ত কোড
ক্রেগ আয়রে

@ ক্রেইগএয়ার, গঠনমূলক ইনপুট জন্য ধন্যবাদ। এই চ্যালেঞ্জটি মূলত পোস্ট হওয়ার সময় ES6 চূড়ান্ত হয়নি এবং উপলভ্য ছিল না। কোডগলফ.মেটার পরামর্শ অনুসারে , আপনি সংক্ষিপ্ত ES6 সংস্করণটি পোস্ট করতে এবং এটি প্রতিদ্বন্দ্বী হিসাবে চিহ্নিত করতে পারেন।
টমাস ল্যাংকাআস

কোনও উদ্বেগ নেই, মূল পোস্টের তারিখটি ডাবল চেক না করার জন্য আমার দোষ! আমি আপনার সমাধানের একটি অনুরাগী তাই আমি আর কোনও পোস্ট করতে যাচ্ছি না, তবে লিঙ্কটির জন্য ধন্যবাদ। বর্ণমালার সদৃশটিকে মুছে ফেলা টেম্পলেট আক্ষরিক যুক্তি একই সংখ্যক বাইটে ES5 তে রূপান্তরিত হতে পারে, প্রতিগুলি ছোট ছোট সংখ্যাগুলি সংরক্ষণ করে না!
ক্রেগ আয়রে

@ ক্রেইগএয়ার, টিপটির জন্য আবারও ধন্যবাদ, বেস 64 এর প্রতীকগুলিকে আরও বেশি সংকুচিত করার জন্য আরও একটি উপায় খুঁজে পেয়েছে (যা এটি আরও পিছনের দিকে সামঞ্জস্যপূর্ণ করেছে - এখন পুরানো আইআই তেও কাজ করা উচিত)।
টমাস ল্যাংকাআস

3

32-বিট x86 বিধানসভা, 59 বাইট

বাইট-কোড:

66 B8 0D 0A 66 AB 6A 14 5A 4A 74 F4 AD 4E 45 0F C8 6A 04 59 C1 C0 06 24 3F 3C 3E 72 05 C0
E0 02 2C 0E 2C 04 3C 30 7D 08 04 45 3C 5A 76 02 04 06 AA 4D E0 E0 75 D3 B0 3D F3 AA C3

disassembly:

b64_newline:
    mov     ax, 0a0dh
    stosw
b64encode:
    push    (76 shr 2) + 1
    pop     edx
b64_outer:
    dec     edx
    je      b64_newline
    lodsd
    dec     esi
    inc     ebp
    bswap   eax
    push    4
    pop     ecx
b64_inner:
    rol     eax, 6
    and     al, 3fh
    cmp     al, 3eh
    jb      b64_testchar
    shl     al, 2     ;'+' and '/' differ by only 1 bit
    sub     al, ((3eh shl 2) + 'A' - '+') and 0ffh
b64_testchar:
    sub     al, 4
    cmp     al, '0'
    jnl     b64_store ;l not b because '/' is still < 0 here
    add     al, 'A' + 4
    cmp     al, 'Z'
    jbe     b64_store
    add     al, 'a' - 'Z' - 1
b64_store:
    stosb
    dec     ebp
    loopne  b64_inner
    jne     b64_outer
    mov     al, '='
    rep     stosb
    ret

ইনপুট বাফারকে নির্দেশ করে এএসআই সহ বি 64 এনকোড কল করুন, এডি আউটপুট বাফারকে নির্দেশ করছে।

লাইন-মোড়ানো ব্যবহার না করা হলে এটি আরও ছোট করা যেতে পারে।


1

পার্ল, 126 বাইট

স্টিডিন পড়ে, স্টাডআউট আউটপুট

$/=$\;print map{$l=y///c/2%3;[A..Z,a..z,0..9,"+","/"]->[oct"0b".substr$_.0 x4,0,6],$l?"="x(3-$l):""}unpack("B*",<>)=~/.{1,6}/g

ungolfed:

my @x = ('A'..'Z','a'..'z',0..9,'+','/');
my $in = join '', <>;
my $bits = unpack 'B*', $in;
my @six_bit_groups = $bits =~ /.{1,6}/g;
for my $sixbits (@six_bit_groups) {
  next unless defined $sixbits;
  $l=length($sixbits)/2%3;
  my $zero_padded = $sixbits . ( "0" x 4 );
  my $padded_bits = substr( $zero_padded, 0, 6 );
  my $six_bit_int = oct "0b" . $padded_bits;
  print $x[$six_bit_int];
  print "=" x (3 - $l)  if  $l;
}

প্রশ্নটি আরএফসি 2045 এর জন্য পরিষ্কার করা হয়েছে, সুতরাং আউটপুটটিকে 76-চর অংশগুলিতে বিভক্ত করতে এবং এতে যোগ দিতে আপনাকে কিছুটা কোড যুক্ত করতে হবে \r\n
পিটার টেলর

1

পার্ল, 147 বাইট

sub b{$f=(3-($#_+1)%3)%3;$_=unpack'B*',pack'C*',@_;@r=map{(A..Z,a..z,0..9,'+','/')[oct"0b$_"]}/.{1,6}/g;$"='';join"\r\n",("@r".'='x$f)=~/.{1,76}/g}

ফাংশনটি ইনপুট হিসাবে পূর্ণসংখ্যার একটি তালিকা নেয় এবং বেস 64 এনকোডযুক্ত স্ট্রিংটিকে আউটপুট দেয়।

উদাহরণ:

print b(99, 97, 102, 195, 169)

কপি করে প্রিন্ট

Y2Fmw6kA

Ungolfed:

অন্তর্বর্তী পদক্ষেপগুলিকে দৃশ্যমান সংস্করণ:

sub b {
    # input array: @_
    # number of elements: $#_ + 1 ($#_ is zero-based index of last element in 
    $fillbytes = (3 - ($#_ + 1) % 3) % 3;
      # calculate the number for the needed fill bytes
      print "fillbytes:       $fillbytes\n";
    $byte_string = pack 'C*', @_;
      # the numbers are packed as octets to a binary string
      # (binary string not printed)
    $bit_string = unpack 'B*', $byte_string;
      # the binary string is converted to its bit representation, a string wit
      print "bit string:      \"$bit_string\"\n";
    @six_bit_strings = $bit_string =~ /.{1,6}/g;
      # group in blocks of 6 bit
      print "6-bit strings:   [@six_bit_strings]\n";
    @index_positions = map { oct"0b$_" } @six_bit_strings;
      # convert bit string to number
      print "index positions: [@index_positions]\n";
    @alphabet = (A..Z,a..z,0..9,'+','/');
      # the alphabet for base64
    @output_chars = map { $alphabet[$_] } @index_positions;
      # output characters with wrong last characters that entirely derived fro
      print "output chars:    [@output_chars]\n";
    local $" = ''; #"
    $output_string = "@output_chars";
      # array to string without space between elements ($")
      print "output string:   \"$output_string\"\n";
    $result = $output_string .= '=' x $fillbytes;
      # add padding with trailing '=' characters
      print "result:          \"$result\"\n";
    $formatted_result = join "\r\n", $result =~ /.{1,76}/g;
      # maximum line length is 76 and line ends are "\r\n" according to RFC 2045
      print "formatted result:\n$formatted_result\n";
    return $formatted_result;
}

আউটপুট:

fillbytes:       1
bit string:      "0110001101100001011001101100001110101001"
6-bit strings:   [011000 110110 000101 100110 110000 111010 1001]
index positions: [24 54 5 38 48 58 9]
output chars:    [Y 2 F m w 6 J]
output string:   "Y2Fmw6J"
result:          "Y2Fmw6J="
formatted result:
Y2Fmw6J=

পরীক্ষা:

পরীক্ষার স্ট্রিংগুলি বেস 64 এর উইকিপিডিয়া নিবন্ধের উদাহরণগুলিতে প্রশ্নের উদাহরণ থেকে আসে ।

sub b{$f=(3-($#_+1)%3)%3;$_=unpack'B*',pack'C*',@_;@r=map{(A..Z,a..z,0..9,'+','/')[oct"0b$_"]}/.{1,6}/g;$"='';join"\r\n",("@r".'='x$f)=~/.{1,76}/g}

sub test ($) {
   print b(map {ord($_)} $_[0] =~ /./sg), "\n\n";
}

my $str = <<'END_STR';
Man is distinguished, not only by his reason, but by this singular passion from
other animals, which is a lust of the mind, that by a perseverance of delight
in the continued and indefatigable generation of knowledge, exceeds the short
vehemence of any carnal pleasure.
END_STR
chomp $str;

test "\143\141\146\303\251";
test $str;
test "any carnal pleasure.";
test "any carnal pleasure";
test "any carnal pleasur";
test "any carnal pleasu";
test "any carnal pleas";
test "pleasure.";
test "leasure.";
test "easure.";
test "asure.";
test "sure.";

পরীক্ষার আউটপুট:

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
IHNpbmd1bGFyIHBhc3Npb24gZnJvbQpvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodAppbiB0aGUgY29udGlu
dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
ZSBzaG9ydAp2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZSO=

YW55IGNhcm5hbCBwbGVhc3VyZSO=

YW55IGNhcm5hbCBwbGVhc3VyZB==

YW55IGNhcm5hbCBwbGVhc3Vy

YW55IGNhcm5hbCBwbGVhc3F=

YW55IGNhcm5hbCBwbGVhcD==

cGxlYXN1cmUu

bGVhc3VyZSO=

ZWFzdXJlLC==

YXN1cmUu

c3VyZSO=

প্রশ্নটি আরএফসি 2045 এর জন্য পরিষ্কার করা হয়েছে, সুতরাং আউটপুটটিকে 76-চর অংশগুলিতে বিভক্ত করতে এবং এতে যোগ দিতে আপনাকে কিছুটা কোড যুক্ত করতে হবে \r\n
পিটার টেলর

@ পিটারটেলর: ধন্যবাদ, আমি আরএফসি
2045 এর

এই সম্পূর্ণ উত্তরের জন্য ব্রাভো। বাধ্যতামূলক লাইন-ব্রেক সহ (ওপিতে "আরএফসি 2045" উল্লেখ করে) আসলে একটি ত্রুটি ছিল, আপনি আসলে সেই অংশটিকে উপেক্ষা করতে পারেন। দুঃখিত :)
xem

1

পাইথন, ২৩৪ টি চর

def F(s):
 R=range;A=R(65,91)+R(97,123)+R(48,58)+[43,47];n=len(s);s+=[0,0];r='';i=0
 while i<n:
  if i%57<1:r+='\r\n'
  for j in R(4):r+=chr(A[s[i]*65536+s[i+1]*256+s[i+2]>>18-6*j&63])
  i+=3
 k=-n%3
 if k:r=r[:-k]+'='*k
 return r[2:]

প্রশ্নটি আরএফসি 2045 এর জন্য পরিষ্কার করা হয়েছে, সুতরাং আউটপুটটিকে 76-চর অংশগুলিতে বিভক্ত করতে এবং এতে যোগ দিতে আপনাকে কিছুটা কোড যুক্ত করতে হবে \r\n
পিটার টেলর

@ পিটারটেলর: স্থির।
কিথ র্যান্ডাল 15

1

গল্ফস্ক্রিপ্ট, 80 (77) বাইট

~.,~)3%:P[0]*+[4]3*\+256base 64base{'+/''A[a{:0'{,^}/=}/{;}P*'='P*]4>76/"\r
":n*

উপরেরগুলি শেষ লাইনের ব্যতীত কোনও লাইনে ঠিক 76 টি অক্ষর ফিট করবে। সমস্ত লাইনগুলি সিআরএলএফ দ্বারা সমাপ্ত করা হয়।

নোট করুন যে আরএফসি 2045 একটি পরিবর্তনশীল, সর্বোচ্চ লাইন দৈর্ঘ্যের 76 টি অক্ষর নির্দিষ্ট করে, তাই সুন্দর আউটপুট ব্যয়ে আমরা 3 টি অতিরিক্ত বাইট সংরক্ষণ করতে পারি।

~.,~)3%:P[0]*+[4]3*\+256base 64base{'+/''A[a{:0'{,^}/=}/{;}P*'='P*]4>{13]n+}/

উপরেরটি সর্বশেষ রেখা ব্যতীত প্রতি লাইনে একটি অক্ষর মুদ্রণ করবে, যার মধ্যে 0, 1 বা 2 টি =অক্ষর থাকতে পারে । গল্ফস্ক্রিপ্ট একটি চূড়ান্ত এলএফ সংযুক্ত করবে, যা আরএফসি 2045 অনুসারে, ডিকোডিং সফ্টওয়্যার দ্বারা অবশ্যই উপেক্ষা করা উচিত।

উদাহরণ

$ echo '[99 97 102 195 169]' | golfscript base64.gs | cat -A
Y2Fmw6k=^M$
$ echo [ {0..142} ] | golfscript base64.gs | cat -A
AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4^M$
OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3Bx^M$
cnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY4=^M$
$ echo '[99 97 102 195 169]' | golfscript base64-sneaky.gs | cat -A
Y^M$
2^M$
F^M$
m^M$
w^M$
6^M$
k^M$
=^M$
$

কিভাবে এটা কাজ করে

~          # Interpret the input string.
.,~)3%:P   # Calculate the number of bytes missing to yield a multiple of 3 and save in “P”.
[0]*+      # Append that many zero bytes to the input array.
[4]3*\+    # Prepend 3 bytes to the input array to avoid issues with leading zeros.
256base    # Convert the input array into an integer.
64base     # Convert that integer to base 64.
{          # For each digit:
  '+/'     # Push '+/'.
  'A[a{:0' # Push 'A[a{:0'.
  {        # For each byte in 'A[a{:0':
    ,      # Push the array of all bytes up to that byte.
    ^      # Take the symmetric difference with the array below it.
  }/       # Result: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  =        # Retrieve the character corresponding to the digit.
}/         #
{;}P*'='P* # Replace the last “P” characters with a string containing that many “=” chars.
]          # Collect all bytes on the stack into an array.
4>         # Remove the first four, which correspond to the 3 prepended bytes.
76/        # Collect all bytes on the stack into an array and split into 76-byte chunks.
"\r\n":n*  # Join the chunks with separator CRLF and save CRLF as the new line terminator.

1

পিএইচপি , 200 বাইট

<?foreach($g=$_GET as$k=>$v)$b[$k/3^0]+=256**(2-$k%3)*$v;for(;$i<62;)$s.=chr($i%26+[65,97,48][$i++/26]);foreach($b as$k=>$v)for($i=4;$i--;$p++)$r.=("$s+/=")[count($g)*4/3<$p?64:($v/64**$i)%64];echo$r;

এটি অনলাইন চেষ্টা করুন!

আপনি ("$s+/=")একটি অ্যারে দিয়ে স্ট্রিং প্রতিস্থাপন করতে পারেarray_merge(range(A,Z),range(a,z),range(0,9),["+","/","="])

কোন বাইট গণনাটি অনুমোদিত মঞ্জুরিপ্রাপ্ত অন্তর্নিহিত দিয়ে পৌঁছতে পারে তা কেবল তুলনা করতে

পিএইচপি , 45 বাইট

<?=base64_encode(join(array_map(chr,$_GET)));

এটি অনলাইন চেষ্টা করুন!


0

জাভাস্ক্রিপ্ট (ES6), 220 বি

f=a=>{for(s=a.map(e=>('0000000'+e.toString(2)).slice(-8)).join(p='');s.length%6;p+='=')s+='00';return s.match(/.{6}/g).map(e=>'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'[parseInt(e,2)]).join('')+p}

যদি আপনার ব্রাউজারটি ES6 সমর্থন করে না, আপনি এই সংস্করণটি (262 বি) দিয়ে চেষ্টা করতে পারেন:

function f(a){for(s=a.map(function(e){return ('0000000'+e.toString(2)).slice(-8)}).join(p='');s.length%6;p+='=')s+='00';return s.match(/.{6}/g).map(function(e){return 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'[parseInt(e,2)]}).join('')+p}

f([99, 97, 102, 195, 169])আয় "Y2Fmw6k="


কোডটি এটিকে-ch-চর অংশগুলিতে ভাগ করার সাথে যুক্ত হয়েছে \r\n?
পিটার টেলর

0

পাইথন - 310, 333

def e(b):
  l=len;c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";r=p="";d=l(b)%3
  if d>0:d=abs(d-3);p+="="*d;b+=[0]*d
  for i in range(0,l(b)-1,3):
    if l(r)%76==0:r+="\r\n"
    n=(b[i]<<16)+(b[i+1]<<8)+b[i+2];x=(n>>18)&63,(n>>12)&63,(n>>6)&63,n&63;r+=c[x[0]]+c[x[1]]+c[x[2]]+c[x[3]]
  return r[:l(r)-l(p)]+p

কিছুটা নাড়িত:

def e( b ):
    c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    r = p = ""
    d = len( b ) % 3

    if d > 0:
        d = abs( d - 3 )
        p = "=" * d
        b + = [0] * d

    for i in range( 0, len( b ) - 1, 3 ):
        if len( r ) % 76 == 0:
            r += "\r\n"

        n = ( b[i] << 16 ) + ( b[i + 1] << 8 ) + b[i + 2]
        x = ( n >> 18 ) & 63, ( n >> 12 ) & 63, ( n >> 6) & 63, n & 63
        r += c[x[0]] + c[x[1]] + c[x[2]] + c[x[3]]

    return r[:len( r ) - len( p )] + p

উদাহরণ :

পাইথনের অন্তর্নির্মিত বেস 64 মডিউলটি কেবলমাত্র উদাহরণটিতে এই eফাংশনটির সঠিক আউটপুট রয়েছে তা নিশ্চিত করার জন্য ব্যবহৃত হয় , eফাংশন নিজেই এটি ব্যবহার করে না।

from base64 import encodestring as enc

test = [ 99, 97, 102, 195, 169 ]
str  = "".join( chr( x ) for x in test )

control = enc( str ).strip()
output = e( test )

print output            # => Y2Fmw6k=
print control == output # => True

প্রশ্নটি আরএফসি 2045 এর জন্য পরিষ্কার করা হয়েছে, সুতরাং আউটপুটটিকে 76-চর অংশগুলিতে বিভক্ত করতে এবং এতে যোগ দিতে আপনাকে কিছুটা কোড যুক্ত করতে হবে \r\n
পিটার টেলর

@ পিটারটেলর ঠিক করা হয়েছে।
টনি এলিস

0

জেলি , 38 বাইট

s3z0Zµḅ⁹b64‘ịØb)FṖ³LN%3¤¡s4z”=Z;€“ƽ‘Ọ

এটি অনলাইন চেষ্টা করুন!

(প্রায়) প্রতিটি অন্যান্য উত্তরে "লাইন শেষের সাথে প্রতি লাইনে সর্বাধিক 76 অক্ষর" এর আরএফসি2045 এর প্রয়োজনীয়তা আবরণে \r\nআমি এটি অনুসরণ করেছি।

কিভাবে এটা কাজ করে

s3z0Zµḅ⁹b64‘ịØb)FṖ³LN%3¤¡s4z”=Z;€“ƽ‘Ọ    Monadic main link. Input: list of bytes

s3z0Z    Slice into 3-item chunks, transpose with 0 padding, transpose back
         Equivalent to "pad to length 3n, then slice into chunks"

µḅ⁹b64‘ịØb)    Convert each chunk to base64
 ḅ⁹b64         Convert base 256 to integer, then to base 64
      ‘ịØb     Increment (Jelly is 1-based) and index into base64 digits

FṖ³LN%3¤¡s4z”=Z    Add correct "=" padding
F                  Flatten the list of strings to single string
 Ṗ      ¡          Repeat "remove last" n times, where
  ³LN%3¤             n = (- input length) % 3
         s4z”=Z    Pad "=" to length 4n, then slice into 4-item chunks

;€“ƽ‘Ọ    Add "\r\n" line separator
;€         Append to each line:
  “ƽ‘       Codepage-encoded list [13,10]
      Ọ    Apply `chr` to numbers; effectively add "\r\n"

বেস ডিকম্প্রেশনটি এখানে ব্যবহার করা যেতে পারে, তবে ṃØbṙ1¤সাধারণ অপারেশনের জন্য এটি বেশ দীর্ঘ।
ব্যবহারকারী 202729

ডেনিসকে ঘোরানো-বেস-ডেকম্প্রেশন পরমাণু তৈরি করতে বলার উপযুক্ত হতে পারে।
ব্যবহারকারী 202729

ব্যর্থ 0,0,0
ব্যবহারকারী 202729
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.