คำอธิบายวิธี:
เขียนสตริงไปยังออฟเซ็ตของบัฟเฟอร์โดยใช้การเข้ารหัสที่ระบุ
ส่งคืนจำนวนอ็อกเทลไบต์ที่เขียนไว้
หากบัฟเฟอร์ไม่มีพื้นที่เพียงพอที่จะรองรับสตริงทั้งหมดจะมีการเขียนสตริงเท่านั้น
ไวยากรณ์:
การคัดลอกรหัสมีดังนี้:
buffer.write (สตริง, [ออฟเซ็ต], [ความยาว], [การเข้ารหัส])
รับพารามิเตอร์:
สตริงสตริงข้อมูลที่เขียนไปยังบัฟเฟอร์
ข้อเสนอหมายเลขตัวเลือกเริ่มต้น 0. ข้อมูลถูกเขียนไปยังตำแหน่งบัฟเฟอร์
หมายเลขความยาวตัวเลือกค่าเริ่มต้น: บัฟเฟอร์ความยาวออฟเซ็ตความยาวของข้อมูลที่จะเขียน
การเข้ารหัสสตริงรูปแบบการเข้ารหัสที่จำเป็นต้องใช้ตัวเลือกค่าเริ่มต้นคือ "UTF8"
ตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
buf = บัฟเฟอร์ใหม่ (256);
len = buf.write (' /u00bd + /u00bc = /u00be', 0);
console.log (len + "ไบต์:" + buf.toString ('UTF8', 0, len));
ซอร์สโค้ด:
การคัดลอกรหัสมีดังนี้:
buffer.prototype.write = function (สตริง, ชดเชย, ความยาว, การเข้ารหัส) {
// อนุญาตให้เขียน (สตริงการเข้ารหัส)
if (util.isstring (ชดเชย) && util.isundefined (ความยาว)) {
การเข้ารหัส = ชดเชย;
ชดเชย = 0;
// อนุญาตให้เขียน (สตริง, ชดเชย [, ความยาว], การเข้ารหัส)
} อื่นถ้า (isfinite (ชดเชย)) {
ออฟเซ็ต = ~~ ชดเชย;
ถ้า (isfinite (ความยาว)) {
ความยาว = ~~ ความยาว;
} อื่น {
การเข้ารหัส = ความยาว
ความยาว = ไม่ได้กำหนด;
-
// xxx legacy write (สตริง, การเข้ารหัส, ชดเชย, ความยาว) - ลบใน v0.13
} อื่น {
ถ้า (! writewarned) {
if (process.throwdeprecation)
โยนข้อผิดพลาดใหม่ (writemsg);
อื่นถ้า (process.tracedeprecation)
console.trace (writemsg);
อื่น
console.error (writemsg);
writewarned = true;
-
var swap = การเข้ารหัส;
การเข้ารหัส = ชดเชย;
ออฟเซ็ต = ~~ ความยาว;
ความยาว = แลกเปลี่ยน;
-
var ที่เหลือ = this.length - ออฟเซ็ต;
if (util.isundefined (ความยาว) || ความยาว> ที่เหลืออยู่)
ความยาว = ที่เหลือ;
การเข้ารหัส = !! การเข้ารหัส? (การเข้ารหัส + '') .ToLowerCase (): 'UTF8';
if (string.length> 0 && (ความยาว <0 || ออฟเซ็ต <0))
โยน rangeerror ใหม่ ('พยายามเขียนเกินขอบเขตบัฟเฟอร์');
var ret;
สวิตช์ (การเข้ารหัส) {
กรณี 'hex':
ret = this.hexwrite (สตริง, ชดเชย, ความยาว);
หยุดพัก;
กรณี 'UTF8':
กรณี 'UTF-8':
ret = this.utf8write (สตริง, ชดเชย, ความยาว);
หยุดพัก;
กรณี 'ASCII':
ret = this.asciiWrite (สตริง, ชดเชย, ความยาว);
หยุดพัก;
กรณี 'ไบนารี':
ret = this.binaryWrite (สตริง, ชดเชย, ความยาว);
หยุดพัก;
กรณี 'base64':
// คำเตือน: MaxLength ไม่ได้นำมาพิจารณาใน Base64Write
ret = this.base64write (สตริง, ชดเชย, ความยาว);
หยุดพัก;
กรณี 'UCS2':
กรณี 'UCS-2':
กรณี 'UTF16LE':
กรณี 'UTF-16LE':
ret = this.ucs2write (สตริง, ชดเชย, ความยาว);
หยุดพัก;
ค่าเริ่มต้น:
โยน typeerror ใหม่ ('การเข้ารหัสที่ไม่รู้จัก:' + การเข้ารหัส);
-
คืนกลับผลตอบแทน;
-