buffer

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

บัฟเป็นวัตถุที่แทนที่บล็อกหน่วยความจำแบบคงที่ที่มีขนาดคงที่ได้คลังบัฟให้ฟังก์ชันสำหรับการสร้างและการจัดการวัตถุบัฟ โดยให้ฟังก์ชันทั้งหมดภายในตัวแปร global buffer

บัฟมีจุดมุ่งหมายเพื่อใช้เป็นโครงสร้างการจัดเก็บข้อมูลไบนารีระดับต่ำ เพื่อแทนที่การใช้งานของ string.pack() และ string.unpack()กรณีการใช้งานรวมถึงการอ่านและเขียนรูปแบบไบนารีที่มีอยู่แล้วการทำงานกับข้อมูลในรูปแบบที่กะทัดรัดมากขึ้นการเขียนรูปแบบไบนารีที่กําหนดเองและทั่วไปกับประเภทหน่วยความจําเดิมเช่นตัวเลขความยาวคงที่และลอยตัว

เมื่อผ่าน API Roblox รวมถึงการส่งบัฟผ่านเหตุการณ์ที่กําหนดเอง, ตัวตนของวัตถุบัฟจะไม่ถูกเก็บไว้และเป้าหมายจะได้รับสําเนาคล้ายกับข้อจํากัดอื่น ๆ วัตถุบัฟเดียวกันไม่สามารถใช้จากสคริปต์หลาย Actor ได้ (Parallel Luau)

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

วิธี read และ write ที่ทำงานกับจํานวนเต็มและลอยตัวใช้การเข้ารหัส little-endian

สรุป

ฟังก์ชัน

  • สร้างบัฟเฟอร์

  • สร้างบัฟจากสตริง

  • แปลงบัฟเป็นสตริง

  • restores ขนาดของบัฟเฟอร์ในไบต์

  • readbits(b : buffer,bitOffset : number,bitCount : number):number

    อ่านช่วงบิตหลายอย่างเป็นจํานวนเต็มที่ไม่ลงนามจากบัฟตามจํานวนเต็ม bitCount จาก 0 ถึง 32 รวมถึง

  • readi8(b : buffer,offset : number):number

    อ่านจํานวนเต็มลงนาม 8 บิตจากบัฟ

  • readu8(b : buffer,offset : number):number

    อ่านตัวเลขไม่ลงนาม 8 บิตจากบัฟเฟอร์

  • readi16(b : buffer,offset : number):number

    อ่านตัวเลขลายลาย 16 บิตจากบัฟเฟอร์

  • readu16(b : buffer,offset : number):number

    อ่านตัวเลขไม่ลงนาม 16 บิตจากบัฟเฟอร์

  • readi32(b : buffer,offset : number):number

    อ่านจํานวนเต็มลงนาม 32 บิตจากบัฟ

  • readu32(b : buffer,offset : number):number

    อ่านตัวเลขไม่ลงนาม 32 บิตจากบัฟเฟอร์

  • readf32(b : buffer,offset : number):number

    อ่านค่าจุดทศนิยมลอยตัว 32 บิตจากบัฟเฟอร์

  • readf64(b : buffer,offset : number):number

    อ่านค่าจุดทศนิยมลอยตัว 64 บิตจากบัฟเฟอร์

  • writebits(b : buffer,bitOffset : number,bitCount : number,value : number):()

    เขียนข้อมูลลงในบัฟตามตัวเลขที่เฉพาะ bitCount จาก 0 ถึง 32 รวมถึง

  • writei8(b : buffer,offset : number,value : number):()

    เขียนจํานวนเต็มลงนาม 8 บิตไปยังบัฟ

  • writeu8(b : buffer,offset : number,value : number):()

    เขียนตัวเลขไม่ลงนาม 8 บิตไปยังบัฟ

  • writei16(b : buffer,offset : number,value : number):()

    เขียนตัวเลขลายลาย 16 บิตไปยังบัฟเฟอร์

  • writeu16(b : buffer,offset : number,value : number):()

    เขียนตัวเลขไม่ลงนาม 16 บิตไปยังบัฟ

  • writei32(b : buffer,offset : number,value : number):()

    เขียนตัวเลขลบลาย 32 บิตไปยังบัฟ

  • writeu32(b : buffer,offset : number,value : number):()

    เขียนตัวเลขไม่ลงนาม 32 บิตไปยังบัฟ

  • writef32(b : buffer,offset : number,value : number):()

    เขียนค่าลอยตัว 32 บิตไปยังบัฟเฟอร์

  • writef64(b : buffer,offset : number,value : number):()

    เขียนค่าลอยตัว 64 บิตไปยังบัฟเฟอร์

  • readstring(b : buffer,offset : number,count : number):string

    อ่านสตริงจากบัฟเฟอร์

  • writestring(b : buffer,offset : number,value : string,count : number?):()

    เขียนสตริงไปยังบัฟเฟอร์

  • copy(target : buffer,targetOffset : number,source : buffer,sourceOffset : number?,count : number?):()

    คัดลอกไบต์ระหว่างบัฟเฟอร์

  • fill(b : buffer,offset : number,value : number,count : number?):()

    ตั้งค่าภูมิภาคของหน่วยความจำบัฟเป็นค่าตัวเลขลบล้าง 8 บิตบางส่วน

ฟังก์ชัน

create

สร้างบัฟขนาดที่ร้องขอด้วยไบต์ทั้งหมดที่ได้รับการเริ่มต้นเป็น 0ขีดจํากัดขนาดคือ 1 GiB หรือ 1,073,741,824 ไบต์โปรดจำไว้ว่าบัฟขนาดใหญ่อาจไม่สามารถจัดสรรได้หากอุปกรณ์มีหน่วยความจำน้อย

พารามิเตอร์

size: number

ขนาดของบัฟเฟอร์

ส่งค่ากลับ

fromstring

สร้าบัฟที่ได้รับการจัดเตรียมสำหรับเนื้อหาของสตริง ขนาดของบัฟเท่ากับความยาวของสตริง

พารามิเตอร์

str: string

ส่งค่ากลับ

tostring

ส่งคืนข้อมูลบัฟเป็นสตริง

พารามิเตอร์

ส่งค่ากลับ

restores ขนาดของบัฟเฟอร์ในไบต์

พารามิเตอร์

ส่งค่ากลับ

readbits

อ่านช่วงบิตหลายอย่างเป็นจํานวนเต็มที่ไม่ลงนามจากบัฟตามจํานวนเต็ม bitCount จาก 0 ถึง 32 รวมถึงตัวอย่าง:

  • buffer.readbits(b, 0, 8) เทียบเท่ากับ buffer.readu8(b, 0) .
  • buffer.readbits(b, 0, 16) เทียบเท่ากับ buffer.readu16(b, 0) .
  • buffer.readbits(b, 0, 32) เทียบเท่ากับ buffer.readu32(b, 0) .
  • buffer.readbits(b, 0, 24) อ่าน 24 บิตจากบัฟเฟอร์

โปรดทราบว่าความกว้างบิต 0 ไม่สนับสนุนในกรณีทั่วไปที่จํานวนบิตเป็นไดนามิกและการอ่าน 0 บิตจะส่งคืน 0โปรดทราบว่า เนื่องจากขนาดสูงสุดของบัฟคือ 1 GB แล้ว bitOffset ไม่สามารถจัดการได้เป็นจํานวนเต็ม 32 บิตเช่นการเลื่อนออฟเซ็ตไบต์ในฟังก์ชันบัฟอื่น

พารามิเตอร์

bitOffset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

bitCount: number

บิตจํานวนที่จะอ่านตัวเลข ข้อผิดพลาดจะถูกโยนหากค่านี้ไม่อยู่ในช่วง 0 ถึง 32 รวมถึง

ส่งค่ากลับ

readi8

อ่านข้อมูลจากบัฟโดยแปลงไบต์ที่อยู่ในตําแหน่งเป็นจํานวนเต็ม 8 บิตและแปลงเป็นตัวเลข

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

ส่งค่ากลับ

readu8

อ่านข้อมูลจากบัฟโดยแปลงไบต์ที่อยู่ในออฟเซ็ตเป็นตัวเลข 8 บิตที่ไม่ลงนามและแปลงเป็นตัวเลข

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

ส่งค่ากลับ

readi16

อ่านข้อมูลจากบัฟโดยแปลงไบต์ที่อยู่ในออฟเซ็ตเป็นตัวเลขลายลักษณ์ 16 บิตและแปลงเป็นตัวเลข

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

ส่งค่ากลับ

readu16

อ่านข้อมูลจากบัฟโดยแปลงไบต์ที่อยู่ในออฟเซ็ตเป็นตัวเลข 16 บิตที่ไม่ลงนามและแปลงเป็นตัวเลข

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

ส่งค่ากลับ

readi32

อ่านข้อมูลจากบัฟโดยแปลงไบต์ที่อยู่ในตําแหน่งเป็นจํานวนเต็ม 32 บิตและแปลงเป็นตัวเลข

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

ส่งค่ากลับ

readu32

อ่านข้อมูลจากบัฟโดยแปลงไบต์ที่อยู่ในตําแหน่งเป็นจํานวนไม่ลงนาม 32 บิตและแปลงเป็นตัวเลข

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

ส่งค่ากลับ

readf32

อ่านข้อมูลจากบัฟโดยแปลงไบต์ที่อยู่ในตําแหน่งเป็นค่าลอยตัว 32 บิตและแปลงเป็นตัวเลขหากค่าจุลภาคที่ลอยอยู่ตรงกับรูปแบบบิตใดก็ได้ที่แทนที่ NaN (ไม่ใช่ตัวเลข) ค่าที่คืนอาจถูกแปลงเป็นการแสดงอันเงียบอื่น ๆ NaN

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

ส่งค่ากลับ

readf64

อ่านข้อมูลจากบัฟโดยแปลงไบต์ที่อยู่ในตําแหน่งเป็นค่าลอยตัว 64 บิตและแปลงเป็นตัวเลขหากค่าจุลภาคที่ลอยอยู่ตรงกับรูปแบบบิตใดก็ได้ที่แทนที่ NaN (ไม่ใช่ตัวเลข) ค่าที่คืนอาจถูกแปลงเป็นการแสดงอันเงียบอื่น ๆ NaN

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

ส่งค่ากลับ

writebits

()

เขียนข้อมูลลงในบัฟตามตัวเลขที่เฉพาะ bitCount จาก 0 ถึง 32 รวมถึงvalue จะถูกปฏิบัติเป็นหมายเลข 32 บิตที่ไม่ลงนามและมีเพียง bitCount บิตที่มีความสำคัญน้อยที่สุดถูกเขียน

โปรดทราบว่าความกว้างบิต 0 ไม่สนับสนุนในกรณีทั่วไปที่จํานวนบิตเป็นไดนามิกและการเขียน 0 บิตไม่มีผลโปรดทราบว่า เนื่องจากขนาดสูงสุดของบัฟคือ 1 GB แล้ว bitOffset ไม่สามารถจัดการได้เป็นจํานวนเต็ม 32 บิตเช่นการเลื่อนออฟเซ็ตไบต์ในฟังก์ชันบัฟอื่น

พารามิเตอร์

bitOffset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

bitCount: number

จํานวนบิตตัวเลขที่จะเขียน ข้อผิดพลาดจะถูกโยนหากค่านี้ไม่อยู่ในช่วง 0 ถึง 32 รวมถึง

value: number

หมายเลข 32 บิตที่ไม่ได้ลงนาม เฉพาะบิตที่มีความสำคัญน้อยที่สุด bitCount จะถูกเขียน

ส่งค่ากลับ

()

writei8

()

เขียนข้อมูลลงในบัฟโดยแปลงหมายเลขเป็นตัวเลขลายลักษณ์ 8 บิตและเขียนไบต์เดียว

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

value: number

ตัวเลขเต็มในช่วง [-128, 127]

ส่งค่ากลับ

()

writeu8

()

เขียนข้อมูลลงในบัฟโดยแปลงหมายเลขเป็นอินทิเกอร์ 8 บิตที่ไม่ลงนามและเขียนไบต์เดียว

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

value: number

จํานวนเต็มในช่วง [0, 255]

ส่งค่ากลับ

()

writei16

()

เขียนข้อมูลลงในบัฟโดยแปลงหมายเลขเป็นตัวเลขลงนาม 16 บิตและแปลใหม่เป็นบายต์แต่ละอัน

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

value: number

ตัวเลขเต็มในช่วง [-32,768, 32,767]

ส่งค่ากลับ

()

writeu16

()

เขียนข้อมูลลงในบัฟโดยแปลงหมายเลขเป็นตัวเลข 16 บิตที่ไม่ลงนามและแปลใหม่เป็นบายต์แต่ละตัว

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

value: number

จํานวนเต็มในช่วง [0, 65,535]

ส่งค่ากลับ

()

writei32

()

เขียนข้อมูลลงในบัฟโดยแปลงหมายเลขเป็นตัวเลขลงนามแบบ 32 บิตและแปลงใหม่เป็นบายต์แต่ละตัว

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

value: number

ตัวเลขเต็มในช่วง [-2,147,483,648, 2,147,483,647]

ส่งค่ากลับ

()

writeu32

()

เขียนข้อมูลลงในบัฟโดยแปลงหมายเลขเป็นตัวเลข 32 บิตที่ไม่ลงนามและประมวลผลใหม่เป็นบายต์แต่ละตัว

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

value: number

จํานวนเต็มในช่วง [0, 4,294,967,295]

ส่งค่ากลับ

()

writef32

()

เขียนข้อมูลลงในบัฟโดยแปลงหมายเลขเป็นค่าลอยตัว 32 บิตและแปลงใหม่เป็นบายต์แต่ละตัว

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

value: number

หมายเลขจุดทศนิยมเดียวที่ลอยอยู่

ส่งค่ากลับ

()

writef64

()

เขียนข้อมูลลงในบัฟโดยแปลงหมายเลขเป็นค่าลอยตัว 64 บิตและแปลงใหม่เป็นบายต์แต่ละตัว

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

value: number

หมายเลขจุดทศนิยมคู่แบบลอยตัว

ส่งค่ากลับ

()

readstring

อ่านสตริงความยาว count จากบัฟที่ระบุ offset

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

count: number

อ่านแล้ว

ส่งค่ากลับ

writestring

()

เขียนข้อมูลจากสตริงเป็นบัฟที่กำหนดไว้ offsetหากระบุตัวเลือก count ไว้ จะใช้ไบต์เพียง count จากสตริงเท่านั้น

พารามิเตอร์

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

value: string

ข้อมูลที่จะเขียน

count: number

จํานวนไบต์ที่จะนํามาจากสตริง ค่านี้ไม่สามารถใหญ่กว่าความยาวของสตริงได้

ส่งค่ากลับ

()

copy

()

สำเนา count ไบต์จาก source เริ่มต้นที่ออฟเซ็ต sourceOffset ใน target ที่ targetOffset

เป็นไปได้สำหรับ source และ target ที่จะเป็นเหมือนกันการคัดลอกภูมิภาคซ้อนทับภายในบัฟเดียวกันจะทำหน้าที่เหมือนกับว่าภูมิภาคที่เป็นที่มาถูกคัดลอกไปยังบัฟชั่วคราวแล้วบัฟนั้นถูกคัดลอกไปยังเป้าหมาย

พารามิเตอร์

target: buffer

บัฟเพื่อคัดลอกข้อมูล

targetOffset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

source: buffer

บัฟเพื่อรับข้อมูล

sourceOffset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

ค่าเริ่มต้น: 0
count: number

จํานวนไบต์ที่จะคัดลอก หากถูกข้ามทั้งหมดข้อมูล source จาก sourceOffset จะถูกนํามา

ส่งค่ากลับ

()

fill

()

ตั้งค่า count ไบต์ในบัฟเริ่มต้นที่ offset ไปยัง value

พารามิเตอร์

บัฟเพื่อเขียนข้อมูลลง

offset: number

ค่าเอฟเฟกต์จากจุดเริ่มต้นของหน่วยความจําบัฟ เริ่มจาก 0

value: number

จํานวนเต็มในช่วง [0, 255]

count: number

จํานวนไบต์ที่จะเขียน หากไม่ได้ระบุ จะตั้งค่าไบต์ทั้งหมดหลังจากค่าเลื่อนที่ระบุไว้

ส่งค่ากลับ

()