關(guān)于bufferedreader,buffer這個(gè)問(wèn)題很多朋友還不知道,今天小六來(lái)為大家解答以上的問(wèn)題,現(xiàn)在讓我們一起來(lái)看看吧!
1、是緩沖。
2、緩沖器。
3、System.Buffer 以字節(jié)數(shù)組(byte[])方式操作基元類(lèi)型數(shù)組,相當(dāng)于 C 語(yǔ)言的 (char*)int_pointer 指針操作。
4、1. Buffer.ByteLength該方法范圍基元類(lèi)型數(shù)組累計(jì)有多少字節(jié)組成。
5、var bytes = new byte[] { 1, 2, 3 };var shorts = new short[] { 1, 2, 3 };var ints = new int[] { 1, 2, 3 };Console.WriteLine(Buffer.ByteLength(bytes)); ?// 1 byte * 3 elements = 3Console.WriteLine(Buffer.ByteLength(shorts)); // 2 byte * 3 elements = 6Console.WriteLine(Buffer.ByteLength(ints)); // 4 byte * 3 elements ?= 12也就是說(shuō)該方法結(jié)果等于"基元類(lèi)型字節(jié)長(zhǎng)度 * 數(shù)組長(zhǎng)度" 。
6、2. Buffer.GetBytepublic static byte GetByte(Array array, int index)這個(gè)方法原型很容易引起誤解。
7、var ints = new int[] { 0x04030201, 0x0d0c0b0a };var b = Buffer.GetByte(ints, 2); // 0x03從左到右順序存儲(chǔ) int,按照小端模式內(nèi)存數(shù)據(jù)就是:01 02 03 04 0a 0b 0c 0dindex 2 的結(jié)果自然是 0x03。
8、3. Buffer.SetBytepublic static void SetByte(Array array, int index, byte value)有了上面的解釋?zhuān)@個(gè)就比較好理解了。
9、var ints = new int[] { 0x04030201, 0x0d0c0b0a };Buffer.SetByte(ints, 2, 0xff);操作前 : 01 02 03 04 0a 0b 0c 0d操作后 : 01 02 ff 04 0a 0b 0c 0d4. Buffer.BlockCopypublic static void BlockCopy(Array src, int srcOffset, Array dst, int dstOffset, int count)看個(gè)例子就明白了。
10、var bytes = new byte[] { 0x0a, 0x0b, 0x0c, 0x0d};var ints = new int[] { 0x00000001, 0x00000002 };Buffer.BlockCopy(bytes, 1, ints, 2, 2);拷貝前 ints 的內(nèi)存布局:01 00 00 00 02 00 00 00從 bytes Index 1 拷貝 2 個(gè)字節(jié)到 ints Index 2 后內(nèi)存布局:01 00 0b 0c 02 00 00 00。
本文分享完畢,希望對(duì)大家有所幫助。
標(biāo)簽:
免責(zé)聲明:本文由用戶(hù)上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!