關於前段ArrayBuffer的數據處理也是最近遇到的,主要是用於接收並顯示后端生成的圖片流。
數據的獲取:
一開始我用的時候ajax請求獲取的文件流,但是js端並顯示不出來該有的圖片但是可以讀出流,可能是接收和處理的方式造成的,若有大神用ajax請求能夠正確讀出ArrayBuffer的請指出。
這種方式是我成功接收並顯示的方法。
數據解析
通過對應數據類型的請求,可以得到二進制數據,數據被存儲在通過ArrayBuffer這個構造函數創建一個緩沖區內,取得數據后需要使用相對應的TypedArray進行解析。
類型化數組有以下幾種:
名稱 | 占用字節 | 描述 |
---|---|---|
Int8Array | 1 | 8位二補碼有符號整數 |
Uint8Array | 1 | 8位無符號整數 |
Uint8ClampedArray | 1 | 8位無符號整型固定數組(數值在0~255之間) |
Int16Array | 2 | 16位二補碼有符號整數 |
Uint16Array | 2 | 16位無符號整數 |
Int32Array | 4 | 32 位二補碼有符號整數 |
Uint32Array | 4 | 32 位無符號整數 |
Float32Array | 4 | 32 位 IEEE 浮點數 |
Float64Array | 8 | 64 位 IEEE 浮點數 |
Int 為整型,Uint 為無符號數,Float 為浮點型,一個字節占八位,解析數據以"字節"為基礎單位,無法直接讀取位(不知道是不是這樣,反正我是沒找到方法)。解析數據的時候要了解數據的存儲格式。
錯誤:
自己之前用ajax方式請求在做數據操作的時候,到了Uint8Array這個對象使用的時候完全轉化不了,可能是由於接收的值不夠准確吧