ข้อมูล: ความแตกต่างของฟังก์ชันระหว่าง Asc/AscB/AscW และ Chr/ChrB/ChrW

ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ

ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:145745
บทความนี้ถูกเก็บถาวรแล้วเนื้อหาของบทความจึงถูกนำเสนอ "ตามลักษณะที่เป็น" และจะไม่มีการปรับปรุงข้อมูลอีก
สรุป
สำหรับปี โปรแกรมเมอร์พื้นฐานได้ถูกใช้ใน Asc และฟังก์ชัน Chr เพื่อเข้าถึง และจัดการแบบ ASCII อักขระชุด ด้วย advent Unicode ยอมรับในระบบปฏิบัติการที่ mainstream และโปรแกรมประยุกต์ ความต้องการฟังก์ชัน Asc และ Chr รุ่นที่ปรับปรุงแล้วมีพัฒนา การตอบสนองคำขอนี้ Microsoft Visual Basic (4.0 และสูงกว่า) สำหรับ Windows มี AscB/ChrB และฟังก์ชัน AscW/ChrW
ข้อมูลเพิ่มเติม
unicode เป็นมาตรฐานที่มีการออกแบบมาเพื่อแทนมาตรฐาน ANSI สำหรับการเข้ารหัสอักขระที่อยู่ในรูปแบบตัวเลข เนื่องจาก ANSI มาตรฐานใช้ไบต์ที่เดียวเพื่อแสดงแต่ละอักขระเท่านั้น จึงเป็นการเกิน 256 อักขระที่แตกต่างกัน กระทำการกำหนดในขณะนี้เป็นเพียงพอสำหรับความต้องการของผู้ชม speaking เป็นภาษาอังกฤษ มันอยู่ย่อเมื่อทำการตลาดซอฟต์แวร์จากทั่วโลกจะถือเป็น ด้วยมาตรฐาน Unicode แต่ละอักขระถูกแสดง โดยไบต์ที่สอง ดังนั้นการตั้งค่าอักขระ Unicode ทั้งหมดรวมถึงตำแหน่งที่ตั้งที่เป็นไปได้ 65,536

Microsoft Windows NT, Microsoft Windows 2000 และ Microsoft OLE 2.0 ทั้งหมด Unicode ที่ใช้ และ Visual Basic (4.0 และสูงกว่า) หมายถึงสตริงการทั้งหมดภายในรูปแบบ Unicode ฟังก์ชัน AscW และ ChrW อนุญาตให้เข้าถึงแบบเต็มช่วงของอักขระ Unicode ฟังก์ชันเหล่านี้ทำงานในแบบเดียวกับฟังก์ชัน Asc และ Chr ที่เริ่มต้นยกเว้นว่าพวกเขาสนับสนุนอาร์กิวเมนต์ตั้งแต่ 0 ถึง 65,535 แทนเพียงตั้งแต่ 0 ถึง 255 กลับสู่วัตถุ Visual Basic มาก (เช่นหน้าต่างตรวจแก้จุดบกพร่องและกล่องป้ายชื่อและข้อความ) "? " เมื่อวัตถุเหล่านี้ไม่ทราบวิธีการแสดงอักขระ Unicode

เนื่องจากสายอักขระทั้งหมดในตอนนี้แสดงอยู่ภายในรูปแบบ Unicode จึงเป็นแบบง่ายว่าจะใช้เพื่อให้แสดงถึงข้อมูลไบนารีในสตริงที่ไม่ใช้ฟังก์ชัน Chr การกำหนดข้อมูลสายอักขระส่งผลไม่ทำงานเดียวกันเป็นก่อน ตัวอย่าง::
   stringvar = Chr(65)				

ผลลัพธ์ในสองแบบไบต์ยาวสาย ซึ่งไบต์ 1 มีค่าเป็น 65 และไบต์ 2 มีค่าเป็น 0 (ซึ่งเป็นการแสดงตัวอักษร "A" Unicode)ให้แน่ใจว่าได้โปรดระลึกว่า การแปลงจาก ANSI เป็น Unicode ไม่เสมอ entail เพิ่มเพียงแค่ไบต์ที่สอง มีค่าเป็นศูนย์เมื่อได้บ้างในกรณีนี้ For example, most of the ANSI character codes in the range130-159 have completely different Unicode values. Try executing a'Debug.Print AscW(Chr(130))' and you a value of 8218 is displayed.

Currently, Microsoft Windows requires a little endian processor, whichmeans that in a multiple byte entity the first byte is the leastsignificant, and significance increases in successive bytes. This explainswhy the Unicode character "A" is represented internally as the following:
   -------------------   |   65   |    0   |   -------------------     byte 0     byte 1				

The AscB and ChrB functions can be used to replicate what used to beaccomplished by the Asc and Chr functions, because these functions allowthe manipulation of single byte quantities. If you would like a four-bytestring that has the binary values of 65, 66, 67, and 68 consecutively thenusing the Chr function will not work. You must instead use the ChrBfunction. ตัวอย่าง::
   stringvar = ChrB(65) & ChrB(66) & ChrB(67) & ChrB(68)				

Alternatively, you can use the ability to create arrays of the new bytedata type and manipulate your binary data that way.

Listed below is an explanation of the results of some simple uses of thesefunctions to further clarify this information.

Print Asc(Chr(255)) --> "255"

Nothing new here, except that the Chr function is returning a Unicodecharacter that occupies two bytes instead of a one-byte ANSI character.

Print Asc(ChrB(255)) --> 5 - Invalid procedure call.

This usage returns an error because the Asc function always expects atleast a two-byte parameter and the ChrB function is only returning a singlebyte.

Print Asc(Chr(256)) --> 5 - Invalid procedure call.

Although the Chr function returns a two-byte Unicode character, it stillonly takes numbers between 0 and 255 for its argument (note that on a DBCSenabled system, Asc/Chr handle two-byte DBCS characters, converting them toand from Unicode). Using the ChrW function allows access to the full 65,536Unicode character locations.

Print AscW(ChrW(256)) --> "256"

This is the new version of the first statement in this section. The ChrWfunction takes a value from 0 to 65,536 and returns that character (on32-bit systems). The AscW function interprets this two-byte character as aUnicode character and returns the correct Unicode value for that character.

Print Asc(ChrW(256)) --> "65"
Print Asc(ChrW(5000)) --> "63"

What is happening here is that the ChrW function is being evaluated first.ChrW(256) is the character "A", and so the function reduces to Asc("A"),and the Unicode (and ANSI) number for "A" is 65. Because Visual Basicdoes not know how to display the character represented by Chr(5000) it justdisplays a "?", and as expected, the Unicode and ANSI value for "?" is 63.

Print AscB(Chr(65)) --> "65"
Print AscB(ChrW(256)) --> "0"
Print AscB(ChrW(257)) --> "1"
Print AscB(ChrW(555)) --> "43"
Print AscB(ChrW(65535)) --> "255"

All of these return values can be explained by understanding how eachcharacter is represented internally (see the little-endian reference above)and by the fact that the AscB function looks only at the first byte of thecharacter it receives. Visually it looks like the following diagram:
             -------------------   Chr(65)   |   65   |    0   |             -------------------   Chr(256)  |    0   |    1   |            -------------------   Chr(257)  |    1   |    1   |             -------------------   Chr(555)  |   43   |    1   |             -------------------   Chr(65535)|   255  |  255   |             -------------------               byte 0    byte 1				

The AscB function just returns whatever the first byte of the character is.

Print ChrB(65) --> ""

Visual Basic prints nothing for this call to the ChrB function because theChrB function is only returning a one-byte string. One byte strings likethis mean nothing to Visual Basic because they do not constitute a validUnicode character (or series of characters).

Print ChrB(65) & ChrB(0) --> "A"

In this case, we are concatenating two one-byte strings into a singletwo-byte string. Because the resulting bit pattern is the same as the bitpattern for the Unicode "A", that is what Visual Basic prints.

คำเตือน: บทความนี้ได้รับการแปลโดยอัตโนมัติ

คุณสมบัติ

รหัสบทความ: 145745 - การตรวจสอบครั้งสุดท้าย: 12/04/2015 13:14:08 - ฉบับแก้ไข: 2.0

Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic 4.0 Standard Edition, Microsoft Visual Basic 4.0 Professional Edition

  • kbnosurvey kbarchive kbinfo kbmt KB145745 KbMtth
คำติชม