vb.net字節(jié)數(shù)組用法 vb string數(shù)組

vb.net 數(shù)組的定義方法

1、vb.net的

十年的蒲江縣網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整蒲江縣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“蒲江縣網(wǎng)站設(shè)計”,“蒲江縣網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

數(shù)組定義與變量定義差不多??梢杂?/p>

dim

來定義

比如:

dim

a(100)

as

integer。

也可以不定義下標(biāo)

在程序中

redim

來定義。

如:

dim

a()

as

integer

'

'

redim

a(100)

2、vb.net中定義數(shù)組可以直接賦值。

如:

dim

a()

as

integer

={1,

2,

3,4}

如何將VB.NET字符串轉(zhuǎn)換成字節(jié)數(shù)組

本文介紹了各種編碼類型,然后討論了將字符串轉(zhuǎn)換成字節(jié)數(shù)組的方法。編碼類型用二進制形式描述一個字符串變量有很多種方式。用來實現(xiàn)該功能的編碼對象依賴于你選擇的編碼。下面是程序開發(fā)人員經(jīng)常使用的編碼類型:ASCII:將字符串中的每個字符使用7個比特編碼。這種編碼類型不能包含擴展的Uincode字符。Full Unicode(UTF-16):將字符串中的每個字符使用16個比特編碼。這種情況下對每個字符一個字節(jié)數(shù)組含有兩個字節(jié)。UTF-7:對于普通的ASCII字符使用7比特編碼,對于擴展字符使用多個7比特對編碼。這種編碼類型最常用于7比特協(xié)議中如mail等。UTF-8:對于普通的ASCII字符使用8比特編碼,對于擴展字符使用多個8比特對編碼。這種情況下對每個字符一個字節(jié)數(shù)組包含一個字節(jié)。

VB中怎么樣用Byte數(shù)組模擬各種無符號整數(shù)?

byte不夠噻

unsigned int你說的是c里的32位無符號整型吧

這個在vb.net里是uinteger類型,有符號的就是integer

long型就是long,無符號long - ulong

類型前面加個u就是無符號類型

用最簡單的代碼介紹一下指針在VB.net里面的用法?

例1:以下程序我們申請幾個指向不同類型的指針:

’使用StructLayout(LayoutKind.Sequential)屬性告訴net編譯器:結(jié)構(gòu)的元素在內(nèi)存中按其出現(xiàn)的順序排列

StructLayout(LayoutKind.Sequential) _

Public Structure DEFUDT_Test

Public bytb As Byte

Public i32a As Int32

End Structure

Public Function fnGetIntptr1() As IntPtr

’取得一個4字節(jié)數(shù)組指針

Dim tabytTest(3) As Byte

’以下語句告訴net垃圾回收進程不對tabytTest進行處理,也就是說tabytTest占用的內(nèi)存區(qū)域固定不變。

Dim thObject As GCHandle = GCHandle.Alloc(tabytTest, GCHandleType.Pinned)

Dim tpObject As IntPtr = thObject.AddrOfPinnedObject() ’取得指向字節(jié)數(shù)組的指針

’取得一個指向32位內(nèi)存數(shù)據(jù)的指針,

’由于使用gchandle取指針的方法只能對引用的對象有效,

’所以對如int32等值類型必須使用將其封裝成為一個對象的方法以變?yōu)橐妙愋?/p>

Dim ti32Test As Object = Convert.ToInt32(0)

’以下語句告訴net垃圾回收進程不對ti32test進行處理,也就是說ti32Test的內(nèi)存位置固定不變。

Dim thObject1 As GCHandle = GCHandle.Alloc(ti32Test, GCHandleType.Pinned)

Dim tpObject1 As IntPtr = thObject1.AddrOfPinnedObject() ’取得ti32Test的首地址

Dim tudtTest1 As DEFUDT_Test

’由于結(jié)構(gòu)是一種值類型變量,為保證指針申請方便,我們申請

’取得一個和結(jié)構(gòu)tudtTest1大小一致的字節(jié)數(shù)組指針,只要空間占用長度和結(jié)構(gòu)一樣就可以了

’由于net在結(jié)構(gòu)封裝中會插入額外的數(shù)據(jù)位,所以一定要用sizeof方法得到結(jié)構(gòu)在非托管使用時的實際大小

Dim tudtTest(Marshal.SizeOf(tudtTest1)) As Byte

Dim thObject2 As GCHandle = GCHandle.Alloc(tudtTest, GCHandleType.Pinned)

Dim tpObject2 As IntPtr = thObject2.AddrOfPinnedObject() ’取得指向結(jié)構(gòu)的指針

’在這兒你可以寫對指針處理的任意代碼(在例2中會給予補充)……

’在使用完畢后一定要釋放指針指向的內(nèi)存塊,讓垃圾回收器可對這個內(nèi)存塊回收處理

If thObject.IsAllocated Then

thObject.Free()

End If

If thObject1.IsAllocated Then

thObject1.Free()

End If

If thObject2.IsAllocated Then

thObject2.Free()

End If

End Function

上例中指針流程處理可以歸納為:

1、 定義一個具有合適內(nèi)存長度的引用變量(關(guān)于引用變量和值變量的差異可以參觀VB.NET的書籍)

2、使用GCHandle.Alloc方法將變量的內(nèi)存區(qū)域固定下來。

3、使用GCHandle對象的AddrOfPinnedObject取得該內(nèi)存區(qū)域的首地址并賦值給指針變量.

4、對指針進行操作

5、使用GCHandle對象的free方法釋放指針指向的內(nèi)存區(qū)域以便net垃圾回收器可以回收這個內(nèi)存空間

2、指針?biāo)赶驍?shù)據(jù)的存取

在.net中,對指針指向數(shù)據(jù)的存儲函數(shù)都封裝在marshal類中,主要的函數(shù)包括:Copy、PtrToStringUni 、PtrToStructure 、OffsetOf、WriteXXX,RreadXXX等,其中WriteXXX的表示向指針?biāo)硎镜牡刂分袑懭隭XX類型的數(shù)據(jù),而ReadXXX中作用就是將指針?biāo)诘刂返臄?shù)據(jù)以XXX類型方式讀出??蠢?,我們使用這些方法演示對例1那幾個指向不同類型數(shù)據(jù)的指針作數(shù)據(jù)存/取操作。

例2:演示向例1申請得到的幾個指針執(zhí)行寫入及讀取數(shù)據(jù)的操作.

Marshal.WriteInt32(tpObject1, 0, Convert.ToInt32(77)) ’向ti32Test變量指向的地址寫入32位整數(shù)77

MsgBox("現(xiàn)在ti32Test的值為:" ti32Test) ’因為變量存儲地址的數(shù)據(jù)已改為77,所以顯示為77

’以下這句之所以可行,因為ti32Test是32位整數(shù),而tpObject指向的tabytTest數(shù)組剛好有4個元素

’而每一個byte元素都占用8位,合起來就是32位,和ti32Test占用的空間一樣。這就印證了前面提’

’到的net中指針沒有指向類型的說明。

Marshal.WriteInt32(tpObject, 0, ti32Test)

’以下代碼再將tabytTest字節(jié)數(shù)組的內(nèi)容理解為一個int32整數(shù),

’并將值賦值給tudtTest結(jié)構(gòu)中的int32元素

’我們使用Marshal.OffsetOf(GetType(DEFUDT_Test), "i32a").ToInt32以取得i32a元素在結(jié)構(gòu)中的內(nèi)存偏移位置

’所以New IntPtr(tpObject2.ToInt32 + Marshal.OffsetOf(GetType(DEFUDT_Test), "i32a").ToInt32)就臨時產(chǎn)生了

’一個指針并指向i32a所在的內(nèi)存地址(, 這個方法也說明了指針可以以字節(jié)為單位進行加減計算以指向合適的變量。

’Marshal.ReadInt32的作用是從指針中讀取一個32整數(shù)。

Marshal.WriteInt32(New IntPtr(tpObject2.ToInt32 + Marshal.OffsetOf(GetType(DEFUDT_Test), "i32a").ToInt32), _

0, Marshal.ReadInt32(tpObject))

’這兒可以將字節(jié)數(shù)組的內(nèi)容復(fù)制到真正的結(jié)構(gòu)中

MsgBox(Marshal.OffsetOf(tudtTest1.GetType, "i32a").ToInt32)

tudtTest1 = CType(Marshal.PtrToStructure(tpObject2, GetType(DEFUDT_Test)), DEFUDT_Test)

MsgBox("結(jié)構(gòu)tidtTest1中i32a元素的值為:" tudtTest1.i32a) ’此處將顯示剛賦的值77

VB.net 如何將bytes()字節(jié)數(shù)組轉(zhuǎn)換到short型數(shù)組?

for一下,將bytes中的字節(jié)轉(zhuǎn)為short,for中就可以將要使用的short進行處理了

vb.net 字節(jié)數(shù)組補0

'寫入

Dim?bytes()?As?Byte?=?{34,?23,?43,?43,?55,?3}

Dim?items?=?(From?item?In?bytes?Select?item.ToString("000")).ToArray()

System.IO.File.WriteAllLines("c:\test.txt",?items)

'讀取

Dim?items2?=?System.IO.File.ReadAllLines("c:\test.txt")

Dim?bytes2?=?(From?item?In?items2?Select?Byte.Parse(item)).ToArray()

For?Each?item?In?bytes2

Console.WriteLine(item.ToString())

Next

本文標(biāo)題:vb.net字節(jié)數(shù)組用法 vb string數(shù)組
文章源于:http://muchs.cn/article44/hjsjee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序用戶體驗、移動網(wǎng)站建設(shè)定制開發(fā)、網(wǎng)頁設(shè)計公司云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司