• Base64FormattingOptions Enumeration 不及格的程序员


     

    ToBase64String(Byte[], Int32, Int32, Base64FormattingOptions)

    将 8 位无符号整数数组的子集转换为其用 Base64 数字编码的等效字符串表示形式。 参数指定作为输入数组中偏移量的子集、数组中要转换的元素数以及是否在返回值中插入分行符。

    C#
    public static string ToBase64String (byte[] inArray, int offset, int length, Base64FormattingOptions options);

    参数

    inArray
    Byte[]

    8 位无符号整数数组。

    offset
    Int32

    inArray 中的偏移量。

    length
    Int32

    要转换的 inArray 的元素数。

    options
    Base64FormattingOptions

    如果每 76 个字符插入一个分行符,则使用 InsertLineBreaks,如果不插入分行符,则使用 None

    返回

    String

    length 中从位置 inArray 开始的 offset 个元素的字符串表示形式,以 Base64 表示。

    例外

    inArray 上声明的默认值为 null

    offset 或 length 为负数。

    • 或 -

    offset 加上 length 大于 inArray 的长度。

    options 不是有效的 Base64FormattingOptions 值。

    示例

    下面的示例演示 ToBase64String 方法。 输入分为三个字节组, (每个字节) 24 位。 因此,每个组由四个 6 位数字组成,其中每个数字范围为十进制 0 到 63。 在此示例中,有 85 个 3 字节组,其余一个字节。 第一组由十六进制值 00、01 和 02 组成,后者生成四个 6 位值等于十进制 0、0、4 和 2。 这四个值对应于输出开头的 base-64 位数字“A”、“A”、“E”和“C”。

    如果 3 字节组的整型数不存在,则剩余的字节有效填充为零,形成完整的组。 在此示例中,最后一个字节的值是十六进制 FF。 前 6 位等于十进制 63,对应于输出末尾的 base-64 位“/”,接下来的 2 位填充为零,以生成十进制 48,对应于 base-64 数字“w”。 最后两个 6 位值是填充值,对应于无值填充字符“=”。

    C#
    // This example demonstrates the Convert.ToBase64String() and
    //                               Convert.FromBase64String() methods
    
    using System;
    class Sample
    {
        public static void Main()
        {
        byte[] inArray  = new byte[256];
        byte[] outArray = new byte[256];
        string s2;
        string s3;
        string step1 = "1) The input is a byte array (inArray) of arbitrary data.";
        string step2 = "2) Convert a subarray of the input data array to a base 64 string.";
        string step3 = "3) Convert the entire input data array to a base 64 string.";
        string step4 = "4) The two methods in steps 2 and 3 produce the same result: {0}";
        string step5 = "5) Convert the base 64 string to an output byte array (outArray).";
        string step6 = "6) The input and output arrays, inArray and outArray, are equal: {0}";
        int x;
        string nl = Environment.NewLine;
        string ruler1a = "         1         2         3         4";
        string ruler2a = "1234567890123456789012345678901234567890";
        string ruler3a = "----+----+----+----+----+----+----+----+";
        string ruler1b = "         5         6         7      ";
        string ruler2b = "123456789012345678901234567890123456";
        string ruler3b = "----+----+----+----+----+----+----+-";
        string ruler   = String.Concat(ruler1a, ruler1b, nl,
                                       ruler2a, ruler2b, nl,
                                       ruler3a, ruler3b, nl);
    
    // 1) Display an arbitrary array of input data (inArray). The data could be
    //    derived from user input, a file, an algorithm, etc.
    
        Console.WriteLine(step1);
        Console.WriteLine();
        for (x = 0; x < inArray.Length; x++)
            {
            inArray[x] = (byte)x;
            Console.Write("{0:X2} ", inArray[x]);
            if (((x+1)%20) == 0) Console.WriteLine();
            }
        Console.Write("{0}{0}", nl);
    
    // 2) Convert a subarray of the input data to a base64 string. In this case,
    //    the subarray is the entire input data array. New lines (CRLF) are inserted.
    
        Console.WriteLine(step2);
        s2 = Convert.ToBase64String(inArray, 0, inArray.Length,
                                    Base64FormattingOptions.InsertLineBreaks);
        Console.WriteLine("{0}{1}{2}{3}", nl, ruler, s2, nl);
    
    // 3) Convert the input data to a base64 string. In this case, the entire
    //    input data array is converted by default. New lines (CRLF) are inserted.
    
        Console.WriteLine(step3);
        s3 = Convert.ToBase64String(inArray, Base64FormattingOptions.InsertLineBreaks);
    
    // 4) Test whether the methods in steps 2 and 3 produce the same result.
        Console.WriteLine(step4, s2.Equals(s3));
    
    // 5) Convert the base 64 string to an output array (outArray).
        Console.WriteLine(step5);
        outArray = Convert.FromBase64String(s2);
    
    // 6) Is outArray equal to inArray?
       Console.WriteLine(step6, ArraysAreEqual(inArray, outArray));
       }
    
        public static bool ArraysAreEqual(byte[] a1, byte[] a2)
        {
        if (a1.Length != a2.Length) return false;
        for (int i = 0; i < a1.Length; i++)
            if (a1[i] != a2[i]) return false;
        return true;
        }
    }
    /*
    This example produces the following results:
    
    1) The input is a byte array (inArray) of arbitrary data.
    
    00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13
    14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27
    28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B
    3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
    50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63
    64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77
    78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B
    8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
    A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3
    B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7
    C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB
    DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
    F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF
    
    2) Convert a subarray of the input data array to a base 64 string.
    
             1         2         3         4         5         6         7
    1234567890123456789012345678901234567890123456789012345678901234567890123456
    ----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+-
    AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4
    OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3Bx
    cnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmq
    q6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj
    5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==
    
    3) Convert the entire input data array to a base 64 string.
    4) The two methods in steps 2 and 3 produce the same result: True
    5) Convert the base 64 string to an output byte array (outArray).
    6) The input and output arrays, inArray and outArray, are equal: True
    
    */
    

    注解

    参数的 inArray 元素被视为数值,并转换为 base 64 中的字符串表示形式。

    从零开始的从零开始的基 64 位数字是大写字符“A”到“Z”,小写字符“a”到“z”,数字“0”到“9”,符号“+”和“/”。 无值字符“=”用于尾随填充。

    参数offset``length为 32 位有符号数字。 参数 offset 从零开始。

     重要

    该方法 ToBase64String 旨在处理包含要编码的所有数据的单个字节数组。 若要对流中的数据进行编码,请使用 System.Security.Cryptography.ToBase64Transform 该类。

    如果参数 options 设置为 InsertLineBreaks 并且转换的输出长度超过 76 个字符,则每 76 个字符插入换行符。 换行符定义为回车符, (U+000D) 后跟换行符 (U+000A) 。 有关详细信息,请参阅 RFC 2045,“多用途 Internet 邮件扩展”,在 .https://www.rfc-editor.org/


    Base64FormattingOptions Enumeration

    .NET Framework (current version)
     
     
     

    Specifies whether relevant Convert.ToBase64CharArray and Convert.ToBase64String methods insert line breaks in their output. 

    This enumeration has a FlagsAttribute attribute that allows a bitwise combination of its member values.

    Namespace:   System
    Assembly:  mscorlib (in mscorlib.dll)

    Syntax

     
     
    [FlagsAttribute]
    public enum Base64FormattingOptions
    

    Members

     
     Member nameDescription
      InsertLineBreaks

    Inserts line breaks after every 76 characters in the string representation.

      None

    Does not insert line breaks after every 76 characters in the string representation.

    Remarks

     

    The Convert.ToBase64CharArray and Convert.ToBase64String methods convert the value of an array of 8-bit unsigned integers to an equivalent string representation that consists of base 64 digits. The string representation can contain one or more line breaks, where a line break is defined as a carriage return character (U+000D) followed by a line feed character (U+000A). Because line breaks are considered whitespace characters in a base-64 encoding, they are ignored when converting a base-64 encoded string back to a byte array. The line breaks are simply convenient when displaying the encoded string to a control or a device such as a console window.

    The Base64FormattingOptions.None and Base64FormattingOptions.InsertLineBreaks values are mutually exclusive. Therefore, although the Base64FormattingOptions enumeration is marked with the FlagsAttribute attribute, it makes no sense to perform a bitwise combination of these two values. 

    Examples

     

    The following example calls the Convert.ToBase64String(Byte[], Base64FormattingOptions) with a Base64FormattingOptions.InsertLineBreaks argument to insert line breaks in the string that is produced by encoding a 100-element byte array. 

     
    using System;
    
    public class Example
    {
       public static void Main()
       {
           // Define a byte array.
           Byte[] bytes = new Byte[100];
           int originalTotal = 0;
           for (int ctr = 0; ctr <= bytes.GetUpperBound(0); ctr++) {
              bytes[ctr] = (byte)(ctr + 1);
              originalTotal += bytes[ctr];
           }
           // Display summary information about the array.
           Console.WriteLine("The original byte array:");
           Console.WriteLine("   Total elements: {0}", bytes.Length);
           Console.WriteLine("   Length of String Representation: {0}",
                             BitConverter.ToString(bytes).Length);
           Console.WriteLine("   Sum of elements: {0:N0}", originalTotal);                  
           Console.WriteLine();
    
           // Convert the array to a base 64 sring.
           String s = Convert.ToBase64String(bytes, 
                                             Base64FormattingOptions.InsertLineBreaks);
           Console.WriteLine("The base 64 string:\n   {0}\n", s);
    
           // Restore the byte array.
           Byte[] newBytes = Convert.FromBase64String(s);
           int newTotal = 0;
           foreach (var newByte in newBytes)
              newTotal += newByte;
    
           // Display summary information about the restored array.
           Console.WriteLine("   Total elements: {0}", newBytes.Length);
           Console.WriteLine("   Length of String Representation: {0}",
                             BitConverter.ToString(newBytes).Length);
           Console.WriteLine("   Sum of elements: {0:N0}", newTotal);                  
       }
    }
    // The example displays the following output:
    //   The original byte array:
    //      Total elements: 100
    //      Length of String Representation: 299
    //      Sum of elements: 5,050
    //   
    //   The base 64 string:
    //      AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5
    //   Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZA==
    //   
    //      Total elements: 100
    //      Length of String Representation: 299
    //      Sum of elements: 5,050
    

    As the output from the example shows, the Convert.FromBase64String succeeds in restoring the original byte array; the line break characters are ignored during the conversion.

    Version Information

     
    .NET Framework
    Available since 2.0
     
  • 相关阅读:
    23
    关系数据库范式
    组合
    排列
    bfs_迷宫求最短路径
    dfs-求连通块
    dfs_部分和问题
    线程
    http://m.blog.csdn.net/article/details?id=51699295
    jquery 页面多个倒计时
  • 原文地址:https://www.cnblogs.com/ioriwellings/p/5335960.html
Copyright © 2020-2023  润新知