日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 语言, 详解fromstring 函数 -------------从字符串到Ascii 码的转换

發(fā)布時間:2025/3/19 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 语言, 详解fromstring 函数 -------------从字符串到Ascii 码的转换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

先來個小例子:

test = "abcdef" temp = numpy.fromstring(test,dtype=numpy.int8) print(temp)

結(jié)果為:[ 97 ?98 ?99 100 101 102]

這樣就ji簡單實現(xiàn)了從字符串到acsii碼的轉(zhuǎn)換

?

下面做一下小的調(diào)整:

test = "abcdef" temp = numpy.fromstring(test,dtype=numpy.int16) print(temp)

我們把int8 改成了int16,再看看運行結(jié)果:[25185 25699 26213]

誒,這就變了,為什么呢?

?

我們在更改一下,換成int32呢?

?報錯了??

?其實呢原理是這樣的……

首先在64位機器上,共有4種int:int8/int16/int32/int64; 有3種float:float16/float32/float64

對于int8和int32之間的差別我就不解釋了。

這個函數(shù)的原型是這樣的:fromstring(string, dtype=None, count=-1, sep='') ,

第一個參數(shù)string就是我們要處理的字符串,這里是test(“abcdef”),

dtype就是我們要轉(zhuǎn)換的類型,默認(rèn)為float64,這個下面詳細(xì)說,

count表示要處理的字符串的長度,count默認(rèn)為-1,為負(fù)值時按字符串的實際長度來處理,這里count為6;count為整數(shù)時 假設(shè)為4,這只處理字符串前4位,即‘a(chǎn)bcd’;count值不可以大于字符串中實際字母的個數(shù),否則報錯。

sep:當(dāng)字符串中全為數(shù)字時,不管數(shù)字之間有沒有分隔符,只要sep='',那么數(shù)字就按ascii的值解析;如果之間沒有間隔,不管sep為不為空,數(shù)字也按ascii值解析;如果數(shù)字之間有間隔符, 而且sep='',數(shù)字按ascii值解析;如果數(shù)字之間有間隔符,sep等于間隔符,數(shù)字解析為數(shù)字值;?其中,空格不可以忽略,也作為一種間隔符。當(dāng)字母數(shù)字混合時,如果有間隔符而且以數(shù)字開頭的字符串,sep==間隔符, # 只解析前幾個為數(shù)字,然后終止;其他情況都按ascii來解析。

下面我們來解釋一下dtype的yon用法:

首先我們明確一下,python中用8個bit位來存儲一個字符,所以字符串string中的每一個字符都占8位。

當(dāng)dtype=int8時,用8個比特位來存儲一個整數(shù),當(dāng)fromstring函數(shù)讀取字符串string時,首先讀取一個dtype的位數(shù),這里即8位int,所以是讀取一個字符來進(jìn)行解析,這樣便實現(xiàn)了從字符到ascii碼的轉(zhuǎn)換。

當(dāng)dtype=int16時,用16個bit位來存儲一個整數(shù),當(dāng)fromstring函數(shù)讀取字符串string時,首先讀取一個dtype的位數(shù),這里即16位int,所以是讀取2個字符來進(jìn)行解析,這里是讀取ab這兩個字符進(jìn)行解析,字符a在低位 字符b在高位,2個字符當(dāng)作一個來處理,a的ascii碼為97,二進(jìn)制表示為:01100001,b的ascii碼為98,二進(jìn)制表示為:01100010.,放在一起為(a在低位b在高位):011100010 01100001,整個二進(jìn)制轉(zhuǎn)換為十進(jìn)制即25185; ?接下來依次處理cd、ef,相同的處理方式

當(dāng)dtype=int32時,用16個bit位來存儲一個整數(shù),當(dāng)fromstring函數(shù)讀取字符串string時,首先讀取一個dtype的位數(shù),這里即32位int,所以是讀取4個字符來進(jìn)行解析,但是這里有個問題,如果每次讀取4個字符進(jìn)行處理,不能完全湊夠4的倍數(shù),就是說先讀取abcd,在讀取時就只剩下ef了,不夠4了,所以這時候就要報錯啦。

當(dāng)dtypei為其他類型,都是相同的道理,當(dāng)字符的個數(shù)不能剛好湊齊時,就會報錯,顯示?string size must be a multiple of element size.

總結(jié)

以上是生活随笔為你收集整理的python 语言, 详解fromstring 函数 -------------从字符串到Ascii 码的转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。