Byte functions in Visual Basic

Why does the VB expression

Asc(ChrB(128) & ChrB(0))

yield 63 and not 128?

Recently, I’ve been looking at Visual Basic’s InputB function for reading binary data. According to the help system, these B-suffixed functions are for use with “byte data” in text files and strings.

In VB, a single character in a string occupies not one but two bytes. For instance, the function call Input(1, #fnum) returns a two-byte string. In contrast, however, InputB(1, #fnum) returns a one-byte string (or “half” a character).

Traditional ASCII / ANSI characters are contained within a single byte. If you used InputB(1, #fnum) to read an ASCII / ANSI character into the first “half” of a string character and fill the second half with a “zero” byte using ChrB(0) then it should stand to reason that the resulting two-byte character would be identical to the result obtained using the ordinary Input(1, #fnum) instead.

In fact, that is largely what happens. It’s only when you hit certain character codes, such as 128, that things go awry.

Consider the following code, for example. To avoid all the file handling code, I’ve used AscB in place of InputB.

Dim c1 As Integer
Dim c2 As Integer
Dim i As Integer

Debug.Print "Code #1", "Code #2"
For i = 0 To 255
    c1 = Asc(Chr(i))
    c2 = Asc(ChrB(i) & ChrB(0))
    Debug.Print c1, c2
Next i

The output is below.

All’s well until we reach 128. From there to 159, c1 and c2 are sometimes identical, as expected, but other times not. When they’re not, c1 is always 63. From 160 upwards, the output is again well behaved.

Code #1       Code #2
 0             0 
 1             1 
 2             2 
 3             3 
 4             4 
 5             5 
 6             6 
 7             7 
 8             8 
 9             9 
 10            10 
 11            11 
 12            12 
 13            13 
 14            14 
 15            15 
 16            16 
 17            17 
 18            18 
 19            19 
 20            20 
 21            21 
 22            22 
 23            23 
 24            24 
 25            25 
 26            26 
 27            27 
 28            28 
 29            29 
 30            30 
 31            31 
 32            32 
 33            33 
 34            34 
 35            35 
 36            36 
 37            37 
 38            38 
 39            39 
 40            40 
 41            41 
 42            42 
 43            43 
 44            44 
 45            45 
 46            46 
 47            47 
 48            48 
 49            49 
 50            50 
 51            51 
 52            52 
 53            53 
 54            54 
 55            55 
 56            56 
 57            57 
 58            58 
 59            59 
 60            60 
 61            61 
 62            62 
 63            63 
 64            64 
 65            65 
 66            66 
 67            67 
 68            68 
 69            69 
 70            70 
 71            71 
 72            72 
 73            73 
 74            74 
 75            75 
 76            76 
 77            77 
 78            78 
 79            79 
 80            80 
 81            81 
 82            82 
 83            83 
 84            84 
 85            85 
 86            86 
 87            87 
 88            88 
 89            89 
 90            90 
 91            91 
 92            92 
 93            93 
 94            94 
 95            95 
 96            96 
 97            97 
 98            98 
 99            99 
 100           100 
 101           101 
 102           102 
 103           103 
 104           104 
 105           105 
 106           106 
 107           107 
 108           108 
 109           109 
 110           110 
 111           111 
 112           112 
 113           113 
 114           114 
 115           115 
 116           116 
 117           117 
 118           118 
 119           119 
 120           120 
 121           121 
 122           122 
 123           123 
 124           124 
 125           125 
 126           126 
 127           127
 128           63 
 129           129 
 130           63 
 131           63 
 132           63 
 133           63 
 134           63 
 135           63 
 136           63 
 137           63 
 138           63 
 139           63 
 140           63 
 141           141 
 142           63 
 143           143 
 144           144 
 145           63 
 146           63 
 147           63 
 148           63 
 149           63 
 150           63 
 151           63 
 152           63 
 153           63 
 154           63 
 155           63 
 156           63 
 157           157 
 158           63 
 159           63 
 160           160 
 161           161 
 162           162 
 163           163 
 164           164 
 165           165 
 166           166 
 167           167 
 168           168 
 169           169 
 170           170 
 171           171 
 172           172 
 173           173 
 174           174 
 175           175 
 176           176 
 177           177 
 178           178 
 179           179 
 180           180 
 181           181 
 182           182 
 183           183 
 184           184 
 185           185 
 186           186 
 187           187 
 188           188 
 189           189 
 190           190 
 191           191 
 192           192 
 193           193 
 194           194 
 195           195 
 196           196 
 197           197 
 198           198 
 199           199 
 200           200 
 201           201 
 202           202 
 203           203 
 204           204 
 205           205 
 206           206 
 207           207 
 208           208 
 209           209 
 210           210 
 211           211 
 212           212 
 213           213 
 214           214 
 215           215 
 216           216 
 217           217 
 218           218 
 219           219 
 220           220 
 221           221 
 222           222 
 223           223 
 224           224 
 225           225 
 226           226 
 227           227 
 228           228 
 229           229 
 230           230 
 231           231 
 232           232 
 233           233 
 234           234 
 235           235 
 236           236 
 237           237 
 238           238 
 239           239 
 240           240 
 241           241 
 242           242 
 243           243 
 244           244 
 245           245 
 246           246 
 247           247 
 248           248 
 249           249 
 250           250 
 251           251 
 252           252 
 253           253 
 254           254 
 255           255

New contributor

Ant is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

1

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật