C#의 HDF5 파일에서 문자열 데이터 세트를 문자열 배열로 읽으려고합니다.HDF5 데이터 세트에서 문자열 배열 읽기
//read the no of rows and columns
var datasetID = H5D.open(fileId,"dimensions");
var dataTypeId = H5D.getType(datasetID);
var dataType = H5T.getClass(dataTypeId);
var length = H5T.getSize(dataTypeId);
int[] dDim = new int[length];
H5D.read(datasetID, dataTypeId, new H5Array<int>(dDim));
내가 문자열 데이터 세트에 대해 동일한 작업을 수행하려고 노력하지만 모두 null에 초기화 된 값을 얻을 : 나는 다음과 같은 코드를 사용하여 데이터 집합으로 읽을 수 있었다. 그래서이 링크 (https://www.mail-archive.com/[email protected]/msg02980.html)를 참조했습니다. 바이트로 읽을 수 있었지만 바이트 배열을 초기화해야하는 크기를 알지 못합니다. 지금 문자열을 읽는 코드는 다음과 같습니다.
//read string
datasetID = H5D.open(fileId, "names");
var dataSpaceId = H5D.getSpace(datasetID);
long[] dims = H5S.getSimpleExtentDims(dataSpaceId);
dataTypeId = H5T.copy(H5T.H5Type.C_S1);
//hard coding the no of string to read (213)
byte[] buffer = new byte[dims[0]*213];
Console.WriteLine(dims[0]);
H5D.read(datasetID, dataTypeId, new H5Array<byte>(buffer));
Console.WriteLine(System.Text.ASCIIEncoding.ASCII.GetString(buffer)); `.
문제점이 무엇인지 정확히 이해하지 못합니다. 그것은 효과가 있느냐 없느냐? 그렇지 않은 경우 오류는 무엇입니까? 제발 정교하게 ... – Abbas
나는 데이터 집합에서 문자열의 번호를 찾을 수 없습니다. – gman
그것의 작동하지만 하드 코드 문자열 수 있습니다. 바이트 배열의 크기를 알고 하드 코딩하지 않고 초기화해야하는 방법이 있습니까? – gman