位、字節、字長的概念及利用ASC函數與WIDECHAR函數進行字符轉換

2021-01-08 VBA語言專家

我們知道,在Excel中有半角字符和全形字符,半角字符和全形字符的區別在於所佔的字節不同,全形字符為雙字節,半角字符為單字節,一個英文的字符佔用一個字節,而一個漢字以及漢字的標點符號、字符都佔用兩個字節。

上面的定義中出現了位、字節、字長的概念,本來今天是想講ASC函數和WIDECHAR函數,既然用到了這些概念不妨先來探討一下:

1 位(bit) 來自英文bit,音譯為「比特」,表示二進位位。位是計算機內部數據儲存的最小單位,11010100是一個8位二進位數。一個二進位位只可以表示0和1兩種狀態;兩個二進位位可以表示00、01、10、11四種狀態;三位二進位數可表示八種狀態……。

2 字節(byte) 字節來自英文Byte,音譯為「拜特」,習慣上用大寫的「B」表示。字節是計算機中數據處理的基本單位。計算機中以字節為單位存儲和解釋信息,規定一個字節由八個二進位位構成,即1個字節等於8個比特(1Byte=8bit)。八位二進位數最小為00000000,最大為11111111;通常1個字節可以存入一個ASCII碼,2個字節可以存放一個漢字國標碼。

3 字(word) 計算機進行數據處理時,一次存取、加工和傳送的數據長度稱為字(word)。一個字通常由一個或多個(一般是字節的整數位)字節構成。

4 字長  計算機的每個字所包含的位數稱為字長。就是字所對應的二進位數的長度。計算的字長是指它一次可處理的二進位數字的數目。計算機處理數據的速率,自然和它一次能加工的位數以及進行運算的快慢有關。如果一臺計算機的字長是另一臺計算機的兩倍,即使兩臺計算機的速度相同,在相同的時間內,前者能做的工作是後者的兩倍。

一臺8位機,它的1個字就等於1個字節,字長為8位。如果是一臺16位機,那麼,它的1個字就由2個字節構成,字長為16位。486微機的字由4個字節組成,它的字長為32位,一般地,大型計算機的字長為32―64位,小型計算機為12―32位,而微型計算機為4一16位。字長是衡量計算機性能的一個重要因素。

通過上面的介紹,知道了半角和全形的設置會影響到內存的佔用,還會影響到計算的速度,那麼,有沒有函數能進行半角全形字符的轉換呢?當然有了!我們今天就來了解一下半角字符和全形字符之間進行轉換的函數----ASC函數和WIDECHAR函數。

1 ASC函數 ASC函數的作用是將全形字符(雙字符)轉換為半角字符(單字符)

語法:ASC(text)

參數:Text 要進行半角轉換的文本。

說明:公式將全形字母轉化為半角字母,若不包含全形字母則保持不變。

2 WideChar 函數 將半角字符(單字符)轉換為全形字符(雙字符)。

語法為:WIDECHAR(text)

參數text:指的是要轉換為全形字符的文本。參數可以是文本也可以是對單元格的引用。

若要轉換的原文本中不包含任何半角字符,則原文本保持不變。

今日內容回向:

1 什麼是位、字節、字、字長?

2 ASC函數 和WIDECHAR函數的意義是什麼?

相關焦點

  • 利用RANDBETWEEN、CHAR、IF函數,隨機產生數字與字母組合字符串
    同時也講了這個函數的兩個利用方法:一是生成A與B之間的隨機數字(A≤隨機數<B):公式=RAND()*(B-A)+A 如:輸入:=RAND()*9+1生成1到10之間的隨機數字,二是生成A與B之間的隨機整數(A≤隨機數<B):公式=INT(RAND()*(B-A)+A)如:輸入:=INT(RAND()*9+1)生成1到10之間的隨機整數。
  • 快速上手系列-C語言之字符串處理函數(一)
    C語言中常用的字符串操作函數,有比如計算字符串長度、字符串拷貝,字符串比較等這樣的整體操作函數,有字符串查詢函數,也有字符串轉換函數等等,這裡先介紹字符串整體操作函數。字符串整體操作函數實際編程中,經常遇到對字符串整體的控制等操作,比如長度測量函數strlen(),字符串拷貝函數strcpy()/strncpy(),字符串比較函數 strcmp()/strncmp(),字符串連接函數strcat()/strncat()等,這些函數是非常有用的。
  • php htmlspecialchars()函數將特殊字符轉換為HTML實體
    htmlspecialchars()函數定義及用法在php中,htmlspecialchars()函數是使用來把一些預定義的字符轉換為HTML實體,返迴轉換後的新字符串,原字符串不變。如果 string 包含無效的編碼,則返回一個空的字符串,除非設置了 ENT_IGNORE 或者 ENT_SUBSTITUTE 標誌;被轉換的預定義的字符有:&:轉換為&amp;":轉換為&quot;':轉換為成為 '<:轉換為&lt;>:轉換為&gt;htmlspecialchars()函數有四個參數,第一個參數規定了需要轉換的字符串
  • C語言常用的進位轉換工具函數盤點!爺爺再也不用擔心我不會進位...
    04 十進位轉字符串 如果只是單個十進位轉字符串,使用sprintf函數就可以了。 如果是十進位數組:
  • EXCEL函數公式大全之利用PROPER函數LOWER函數實現英文大小寫轉換
    EXCEL函數公式大全之利用PROPER函數LOWER函數實現英文字母大小寫轉換。EXCEL函數與公式在工作中使用非常的頻繁,會不會使用公式直接決定了我們的工作效率,今天我們來學習一下提高我們工作效率的函數PROPER函數LOWER函數。
  • 詳講WinCC VBscript常用標準函數總結
    在WinCC軟體中使用VBS進行編程的時候常常使用的標準函數整理如下:數值型函數:abs(num): 返回絕對值sgn(num): num>0 1; num=0 0; num<0 -1;判斷數值正負hex(num): 返回十六進位值 直接表示:&Hxx 最大8位oct(num): 返回八進位值 直接表示:&Oxx 最大8位sqr(num
  • 在C語言中如何高效地複製和連接字符串?
    出於對代碼複雜性和可讀性的擔心,程式設計師們有時會使用snprintf函數進行字符串連接。然而,由於C庫中沒有等價的字符串函數,而只有當snprintf調用被證明不會導致輸出的截斷時,轉換才會完成,因此對snprintf的相應轉換很少能夠發生。memcpy本身不合適,因為它複製的字節數與指定的字節數完全相同,strncpy也不適合,因為它把目標字符串的最後的NUL結束符之後的位數都覆蓋了。
  • 介紹「十六進位數字符串至數值轉換」函數
    該節點位於函數/字符串/「字符串/數值轉換」下,功能是把輸入的字符串(ASCII)通過十六進位數字再轉換成數值有幾點需要注意:本文引用地址:http://www.eepw.com.cn/article/201701/337016.htm1:雖然該函數的輸入端子「string」的值可以是十六進位數、字符串(ASCII)或其他進位數,但是「string」的值流入該函數中時,先轉換成字符串(ASCII)。
  • DB2常用函數與Oracle比較
    【IT168 技術文章】     1、類型轉化函數:decimal, double, Integer, smallint,real,Hex(arg),    date, time,timestamp,char, varchar    常用舉例:    --轉化為字符串類型
  • Excel騷操作-巧用字符函數實現中英文分割
    以往的數據中,需要拆分的數據之間大多有如「-」或者「|」或者「\」分隔符或者是空格進行連接,那麼直接通過數據分列功能即可實現,非常簡單。對於長度非常規整的,按寬度也可以進行分裂,也是通過數據分列功能即可。
  • 二進位、十進位、八進位、十六進位間的相互轉換函數
    二進位、十進位、八進位、十六進位間的相互轉換函數1、輸入任意一個十進位的整數,將其分別轉換為二進位、八進位、十六進位。2、程序代碼如下:#include<iostream>using namespace std;int main(){int num;char a[39
  • Excel Mid函數與Midb函數的使用方法,含反向取值
    在 Excel 中,提取指定長度的字符有兩個函數,分別為Mid函數和Midb函數,前者用於提取指定長度的字符個數,後者用於提取指定長度的字節個數。用Mid函數提取時,無論是漢字、字母還是數字都算一個字符;用Midb函數提取時,漢字算兩個字節,數字和字母算一個字節。一般情況下,它們從左向右提取;但也可以反向提取,即從右向左提取。
  • EXCEL函數公式大全之利用SUBSTITUTE函數REPLACE函數刪除特定文本
    EXCEL函數公式大全之利用SUBSTITUTE函數和REPLACE函數的組合刪除特定字符串中的字符。EXCEL函數與公式在工作中使用非常的頻繁,會不會使用公式直接決定了我們的工作效率,今天我們來學習一下提高我們工作效率的函數SUBSTITUTE函數和REPLACE函數。
  • Excel Replace函數與ReplaceB函數的使用方法,含7個替換實例
    在 Excel 中,Replace函數與ReplaceB函數用於替換指定的字符數和字節數,它們都有四個參數,其中三個參數相同,只有一個參數不同,也就是指定字符數和字節數的參數不同。以下是 Excel Replace函數與ReplaceB函數的使用方法,總共有7個實例,分別為把單槓替換為雙槓,替換姓名中間一個字,把部分數字替換為星號*,替換某個字後的所有字符,替換一段字符中間指定個字符、替換數字、字母和特殊字符和替換單字節與雙字節,實例操作所用版本均為 Excel 2016。
  • 按任意符號間隔拆分字符串的函數
    大家好,我們今日講解「VBA信息獲取與處理」教程中第十四個專題「Split函數提取數據信息的深入講解」的第二節「按任意符號間隔拆分字符串的函數」,這個專題是非常實用的知識點,希望大家能掌握利用。第二節 按任意符號間隔拆分字符串的函數在上一講中,我們講解了Split函數的基本應用,但我們很快會發現,這個函數在利用起來有一定的局限性,只能按某個字符串進行拆分,在實際的應用中,如果我們要按多個字符串進行拆分,這個函數就無能為力了,怎麼辦?我們可以擴展一下這個函數的功能。
  • Matlab常用函數與常用指令大全
    11.5 內聯函數對象(Inline function object)argnames 給出函數的輸入宗量char 創建字符傳輸組或者將其他類型變量轉化為字符串數組formula 函數公式inline 創建內聯函數11.6 差微分函數解算器(Differential equation solvers)ode113 變階法解方程ode15s
  • 學校裡學不到的C語言教程之10:一定要會的移位和16進位轉換原理
    在學校時,我們就學過可以用 printf 來輸出一個數據的 16 進位內容,例如:/*按16進位輸出,默認右對齊*/printf("%x\n",PrintVal);在 delphi 等於開發語言中也有類似的函數,但象"quoted-printable" 編碼這樣的實現在 C 語言中通常不可能用這樣的函數去轉換 16 進位的,原因只有一個:性能問題。